题面

题意:给你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. 打包Python程序

    我选择的是pyinstaller,(py2exe到目前为止只支持到Python3.4). 安装.如果能联网最后用pip.在cmd中输入pip install Pyinstaller.如果不能联网,可以 ...

  2. Visual Studio UI Automation 学习(三)

    昨天了解到UI Automation是微软的.Net Framework框架里的4个DLL文件,可以在Visual studio里写代码时引入引用和引用命名空间.然后去写自动化代码. 今天本来是跟着一 ...

  3. javascript 基础知识点

    NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示 Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时 ...

  4. String类练习统计一个字符串中大小写字母及数字字符个数

    public class StringPractice { public static void main(String[] args) { //创建一个文本扫描器 Scanner sc = new ...

  5. ubuntu18.0安装RabbitMQ

    RabbitMQ是一个消息队列,用于实现应用程序的异步和解耦.生产者将生产消息传送到队列,消费中从队列中拿取消息并处理.生产者不用关心是谁来消费,消费者不用关系是谁在生产消息,从而达到解耦的目的.本文 ...

  6. Android 性能测试初探(六)

    书接前文 Android 性能测试初探之功耗(五) 本节聊聊性能测试的最后一项- 流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速.弱网之类的测试,但本系列文章都不去一一探 ...

  7. es 存入失败错误

    {, 'error': {'type': 'illegal_argument_exception', 'reason': 'Rejecting mapping update to [bd_date] ...

  8. [luogu1447 NOI2010] 能量采集 (容斥原理)

    传送门 Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的 ...

  9. Springmvc中ajax与jason应用

    Springmvc中ajax与jason应用 相关依赖包 json数据转换的jar包 jackson-annotations-2.5.4 jackson-core-2.5.4 jackson-data ...

  10. 21.实验基于_version进行乐观锁并发控制

    21.实验基于_version进行乐观锁并发控制 主要知识点: 实验基于_version进行乐观锁并发控制 1.实验实战演练基于_version进行乐观锁并发控制 (1)先构造一条数据出来 PUT / ...