题面

题意:给你N个点,M条边的无向图 (N<=15000,M<=30000)第j条边的长度为 dj (1<=dj<=1e9),然后K个询问 (1<=K<=20000)。

每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少?

题解:求所有路径上,那些最大的边中最小的值,也就是“最小”的路径上的最大值,那也是就是最小生成树上,路径的最大值,多次询问,利用树链剖分或者倍增解决

 #include<bits/stdc++.h>
using namespace std;
#define lld long long
#define N 30005
struct rec
{
int go,next,v;
}eg[N],a[N];
int k,m,n,x,y,p,head[N],lca[N][],q[N][],dep[N];
int fa[N];
void build(int x,int y,int c)
{
p++;
eg[p].next=head[x];
eg[p].go=y;
eg[p].v=c;
head[x]=p;
}
bool cmp(rec x,rec y)
{
return x.v<y.v;
}
int get(int x)
{
if (fa[x]==x) return x;
fa[x]=get(fa[x]);
return fa[x];
}
int query(int x,int y)
{
int ret=;
if (dep[x]<dep[y]) swap(x,y);
for (int i=;i>=;i--)
if (dep[x]-(<<i)>=dep[y])
{
ret=max(ret,q[x][i]);
x=lca[x][i];
}
if (x==y) return ret;
for (int i=;i>=;i--)
if (lca[x][i]!=lca[y][i])
{
ret=max(ret,max(q[x][i],q[y][i]));
x=lca[x][i];
y=lca[y][i];
}
ret=max(ret,max(q[x][],q[y][]));
return ret;
}
void dfs(int x)
{
for (int i=head[x];i;i=eg[i].next)
{
int v=eg[i].go;
if (v==lca[x][]) continue;
dep[v]=dep[x]+;
lca[v][]=x;
q[v][]=eg[i].v;
dfs(v);
}
}
int main()
{
freopen("1.txt","r",stdin);
scanf("%d%d%d",&n,&m,&k);
for (int i=;i<=n;i++) fa[i]=i;
for (int i=;i<=m;i++) scanf("%d%d%d",&a[i].go,&a[i].next,&a[i].v);
sort(a+,a+m+,cmp);
int cnt=;
for (int i=;i<=m;i++)
{
x=get(a[i].go),y=get(a[i].next);
if (x!=y)
{
fa[x]=y;
cnt++;
build(a[i].go,a[i].next,a[i].v);
build(a[i].next,a[i].go,a[i].v);
}
if (cnt==n-) break;
}
dfs();
for (int j=;j<=;j++)
for (int i=;i<=n;i++)
if (lca[i][j-])
{
lca[i][j]=lca[lca[i][j-]][j-];
q[i][j]=max(q[i][j-],q[lca[i][j-]][j-]);
}
while (k--)
{
scanf("%d%d",&x,&y);
printf("%d\n",query(x,y));
}
}

BZOJ-3732 Network 图论 最小生成树 倍增的更多相关文章

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

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

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

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

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

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

  4. BZOJ 3732 Network Kruskal+倍增LCA

    题目大意:给定一个n个点m条边的无向连通图.k次询问两点之间全部路径中最长边的最小值 NOIP2013 货车运输.差点儿就是原题...仅仅只是最小边最大改成了最大边最小.. . 首先看到最大值最小第一 ...

  5. BZOJ 3732 Network

    2016.1.28 纪念我BZOJ第一题 Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= ...

  6. bzoj 3732: Network 树上两点边权最值

    http://www.lydsy.com/JudgeOnline/problem.php?id=3732 首先想到,要使得最长边最短,应该尽量走最短的边,在MST上. 然后像LCA那样倍增娶个最大值 ...

  7. bzoj 3732: Network【克鲁斯卡尔+树链剖分】

    先做最小生成树,这样就保证了最大值最小 然后随便用个什么东西维护一下最大值,我用的树剖log^2,倍增会更快 #include<iostream> #include<cstdio&g ...

  8. BZOJ 3732 Network 【模板】kruskal重构树

    [题解] 首先,我们可以发现,A到B的所有路径中,最长边的最小值一定在最小生成树上.我们用Kruskal最小生成树时,假设有两个点集U,V,若加入一条边w(u,v)使U,V联通,那么w就是U中每个点到 ...

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

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

随机推荐

  1. 查找索引/ie滤镜/动态背景/属性attr和prop

    1. 查找索引 查找当前元素在指定范围内的索引序号,示例: $('.right_newestState_con').find('em').index($(this)); 2. ie滤镜 利用ie的私有 ...

  2. 英语之ASIC

    ASIC(Application Specific Integrated Circuit) = 专用集成电路 assign = [计][数] 赋值 assign a value 分配一个值:赋值

  3. 【Web缓存机制系列】2 – Web浏览器的缓存机制-(新鲜度 校验值)

    Web缓存的工作原理 所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改).这些规则有的在协议中有定义(如HTTP协议1.0 ...

  4. C# 聚合数据借口发短信的使用

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. 微信小程序播放背景音乐

    小程序实现和h5一样的音乐图标一直旋转. 一..js中封装旋转动画方法 添加animation属性 data:{ animation:''" } 改变animation的值(官网提供角度范围 ...

  6. jdk?jre?

    很多人都搞不懂什么是jdk,什么是jre,只知道电脑安装了这两个就能开发和运行java程序,这里我简单讲讲什么是jdk,什么是jre. jdk,即Java Development Kit,故名思意就是 ...

  7. jmeter的性能监控框架搭建记录(Influxdb+Grafana+Jmeter)

    查看笔记 http://note.youdao.com/noteshare?id=c700365713abb98bd3d10e6f45393af9&sub=6F4E14FF3F9D4167AE ...

  8. jQuery升级踩坑之路

    1.使用了被废弃的jQuery.browser属性 jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更 ...

  9. base64模块 简单了解

    base64,字符串文本编码解码,方便数据进行传输 import base64 '''编码解码''' st = 'ni hao'.encode('utf8') result = base64.b64e ...

  10. (25)Spring Boot使用自定义的properties【从零开始学Spring Boot】

    spring boot使用application.properties默认了很多配置.但需要自己添加一些配置的时候,我们应该怎么做呢. 若继续在application.properties中添加 如: ...