题目大意:给定一个n个点m条边的无向连通图。k次询问两点之间全部路径中最长边的最小值

NOIP2013 货车运输。差点儿就是原题。。。仅仅只是最小边最大改成了最大边最小。。

首先看到最大值最小第一反应二分答案 可是二分答案O(kmlogn)明显做不了 这里我们考虑最小生成树

先生成一棵最小生成树,然后每次询问利用倍增LCA求出路径上的最大权值就可以

本蒟蒻竟然把LCA写挂了。。。 并且例子还过了。。。 伤不起啊。。。

90%达成 剩下一道刷点啥呢。。。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct edge{
int x,y,f;
bool operator < (const edge &y) const
{
return f < y.f;
}
}edges[30300];
struct abcd{
int to,f,next;
}table[30300];
int head[15100],tot;
int n,m,k;
int fa[15100][20],f_max[15100][20],dpt[15100];
int belong[15100];
int find(int x)
{
if(!belong[x]||belong[x]==x)
return belong[x]=x;
return belong[x]=find(belong[x]);
}
void add(int x,int y,int z)
{
table[++tot].to=y;
table[tot].f=z;
table[tot].next=head[x];
head[x]=tot;
}
void dfs(int x)
{
int i;
dpt[x]=dpt[fa[x][0]]+1;
for(i=head[x];i;i=table[i].next)
{
if(table[i].to==fa[x][0])
continue;
fa[table[i].to][0]=x;
f_max[table[i].to][0]=table[i].f;
dfs(table[i].to);
}
}
int Query(int x,int y)
{
int j,re=0;
if(dpt[x]<dpt[y])
swap(x,y);
for(j=14;~j;j--)
if(dpt[ fa[x][j] ]>=dpt[y])
re=max(re,f_max[x][j]),x=fa[x][j];
if(x==y)
return re;
for(j=14;~j;j--)
if(fa[x][j]!=fa[y][j])
{
re=max(re,f_max[x][j]);
re=max(re,f_max[y][j]);
x=fa[x][j];
y=fa[y][j];
}
re=max(re,f_max[x][0]);
re=max(re,f_max[y][0]);
return re;
}
int main()
{
int i,j,x,y;
cin>>n>>m>>k;
for(i=1;i<=m;i++)
scanf("%d%d%d",&edges[i].x,&edges[i].y,&edges[i].f);
sort(edges+1,edges+m+1);
for(i=1;i<=m;i++)
{
int fx=find(edges[i].x),fy=find(edges[i].y);
if(fx!=fy)
{
belong[fx]=fy;
add(edges[i].x,edges[i].y,edges[i].f);
add(edges[i].y,edges[i].x,edges[i].f);
}
}
dfs(1);
for(j=1;j<=14;j++)
for(i=1;i<=n;i++)
fa[i][j]=fa[ fa[i][j-1] ][j-1],f_max[i][j]=max( f_max[i][j-1] , f_max[ fa[i][j-1] ][j-1] );
for(i=1;i<=k;i++)
{
scanf("%d%d",&x,&y);
printf("%d\n", Query(x,y) );
}
}

BZOJ 3732 Network Kruskal+倍增LCA的更多相关文章

  1. BZOJ 3732 Network —— 最小生成树 + 倍增LCA

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3732 Description 给你N个点的无向图 (1 <= N <= 15, ...

  2. BZOJ 3732: Network 最小生成树 倍增

    3732: Network 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3732 Description 给你N个点的无向图 (1 &l ...

  3. BZOJ 4144 Dijkstra+Kruskal+倍增LCA

    思路: 先把所有的加油站 push进按weight排序的优先队列里 对于每个不是加油站的点 找到到它的点的最短路以及它来源的加油站 如果x和y有边 且x和y加油站的来源不一样 则它可以连边 跑一边Kr ...

  4. [bzoj 3732] Network (Kruskal重构树)

    kruskal重构树 Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1-N. 图中有M条边 (1 <= M <= 30,000) ,第 ...

  5. 【BZOJ3732】 Network Kruskal+倍增lca

    Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_ ...

  6. BZOJ 3732: Network Kruskal 重构树

    模板题,练练手~ Code: #include <cstdio> #include <algorithm> #define N 80000 #define setIO(s) f ...

  7. 【bzoj3732】Network 最小生成树+倍增LCA

    题目描述 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 & ...

  8. Kruskal重构树+LCA || BZOJ 3732: Network

    题面:https://www.lydsy.com/JudgeOnline/problem.php?id=3732 题解:Kruskal重构树板子 代码: #include<cstdio> ...

  9. bzoj 3732 Network(最短路+倍增 | LCT)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3732 [题意] 给定一个无向图,处理若干询问:uv路径上最长的边最小是多少? [思路一 ...

随机推荐

  1. 利用CORS实现跨域请求--转

    原文地址:http://newhtml.net/using-cors/ 跨域请求一直是网页编程中的一个难题,在过去,绝大多数人都倾向于使用JSONP来解决这一问题.不过现在,我们可以考虑一下W3C中一 ...

  2. eclipse启动Tomcat加载项目时报内存溢出错误解决办法

    在eclipse中点击Window->Preferences打开全局属性设置对话框,如下图所示设置Tomcat运行时的JVM参数,添加这段JVM设置:-Xms256M -Xmx768M -XX: ...

  3. XDoclet学习

    XDoclet可以通过你在java源代码中的一些特殊的注释信息,自动为你生成配置文件.源代码等等,例如web.ejb的部署描述文件.为你生成struts的struts-config.xml配置文件.j ...

  4. 相比于HTML4,HTML5废弃的元素有哪些?

    第一类:表现性元素basefontbigcenterfontsstrikettu建议用语义正确的元素代替他们,并使用CSS来确保渲染后的效果 第二类:框架类元素因框架有很多可用性及可访问性问题,HTM ...

  5. 网络协议 4 - 交换机与 VLAN

    上一次,我们通过公司需求,认识了如何通过物理层和链路层组建一个公司局域网.今天,我们切换到复杂点的办公室场景.     在这个场景里,就不像在大学教室那样,搞几根网线,拉一拉,扯一扯就可以了.一个办公 ...

  6. python学习二,字符串常用操作

    字符串可以说是在日常开发中应用最广泛的了,现在来总结下有关python中有关字符串一些常用操作 首先我们声明一个字符串变量 str = "hello world" 下面我们来依次介 ...

  7. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  8. 【Django】Web框架本质

    目录 根据不同的路径返回不同的内容 普通版 函数版 函数进阶版 返回具体的HTML文件 让网页动态起来 服务器和应用程序 wsgiref 模块 @ * 我们可以这样理解:所有的==Web应用本质上就是 ...

  9. [Python] Check for None (Null) in Python

    If you’ve used other programming languages, you may have learned that an empty object is not the sam ...

  10. 參考mudo logging写的win下logging

    #pragma once #include <boost/noncopyable.hpp> #include <boost/scoped_ptr.hpp> #include & ...