codevs 3287 货车运输 NOIP2013提高组
题目链接:http://codevs.cn/problem/3287/
题解:
和bzoj3732一毛一样,只不过是找最大生成树和最小值罢了,具体参见我的bzoj3732的博客
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAXN 100010
#define MAXM 1000010
int n,m,k,heade[MAXN],father[MAXN],fa[][MAXN],dep[MAXN];
struct edge1
{
int u,v,val;
}e1[MAXM];
struct edge
{
int v,next,val;
}e[MAXM];
int min(int x,int y)
{
return x<y?x:y;
}
int find(int x)
{
return father[x]=father[x]==x?x:find(father[x]);
}
bool cmp(edge1 a,edge1 b)
{
return a.val>b.val;
}
void adde(int i,int x,int y,int z)
{
e1[i]=(edge1){x,y,z};
}
void dfs(int u)
{
for(int i=heade[u];i;i=e[i].next)
{
if(!dep[e[i].v])
{
dep[e[i].v]=dep[u]+;
fa[][e[i].v]=u;
dfs(e[i].v);
}
}
}
int LCA(int u,int v)
{
if(dep[u]>dep[v])swap(u,v);
for(int i=;~i;i--)
if(dep[fa[i][v]]>=dep[u])
v=fa[i][v];
if(u==v)return u;
for(int i=;~i;i--)
if(fa[i][u]!=fa[i][v])
{
u=fa[i][u];
v=fa[i][v];
}
return fa[][u];
}
int main()
{
scanf("%d%d",&n,&m);
int x,y,z;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
adde(i<<,x,y,z);
adde(i<<+,y,x,z);
}
for(int i=;i<=n;i++)
father[i]=i;
sort(e1+,e1+m*+,cmp);
int cnt=;
for(int i=;i<=m*;i++)
{
x=find(e1[i].u);
y=find(e1[i].v);
if(x!=y)
{
int u=e1[i].u,v=e1[i].v;
father[y]=x;
++cnt;
e[cnt<<]=(edge){v,heade[u],e1[i].val};
heade[u]=cnt<<;
e[(cnt<<)+]=(edge){u,heade[v],e1[i].val};
heade[v]=(cnt<<)+;
if(cnt==n-)break;
}
}
dep[]=fa[][]=;
dfs();
for(int i=;i<=;i++)
for(int j=;j<=n;j++)
fa[i][j]=fa[i-][fa[i-][j]];
scanf("%d",&k);
while(k--)
{
scanf("%d%d",&x,&y);
int lca=LCA(x,y),t=x,ans=;
if(!lca)
{
printf("-1\n");
continue;
}
while(t!=lca)
{
for(int i=heade[t];i;i=e[i].next)
{
if(dep[e[i].v]<dep[t])
{
t=e[i].v;
ans=min(ans,e[i].val);
break;
}
}
}
t=y;
while(t!=lca)
{
for(int i=heade[t];i;i=e[i].next)
{
if(dep[e[i].v]<dep[t])
{
t=e[i].v;
ans=min(ans,e[i].val);
break;
}
}
}
printf("%d\n",ans);
}
return ;
}
codevs 3287 货车运输 NOIP2013提高组的更多相关文章
- Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座 ...
- Codevs 3287 货车运输 == 洛谷P1967
3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description A 国有 n 座城市,编 ...
- Codevs 3287 货车运输
题目描述 Description A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过 ...
- [NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
一开始觉得是网络流..仔细一看应该是最短路,再看数据范围..呵呵不会写...这道题是最大生成树+最近公共祖先.第一次写..表示各种乱.. 因为要求运输货物质量最大,所以路径一定是在最大生成树上的.然后 ...
- [NOIp2013提高组]积木大赛/[NOIp2018提高组]铺设道路
[NOIp2013提高组]积木大赛/[NOIp2018提高组]铺设道路 题目大意: 对于长度为\(n(n\le10^5)\)的非负数列\(A\),每次可以选取一个区间\(-1\).问将数列清零至少需要 ...
- [NOIP2013 提高组] 华容道 P1979 洛谷
[NOIP2013 提高组] 华容道 P1979 洛谷 强烈推荐,更好的阅读体验 经典题目:spfa+bfs+转化 题目大意: 给出一个01网格图,和点坐标x,y空格坐标a,b,目标位置tx,ty要求 ...
- 【NOIP2013提高组】货车运输
货车运输 (truck.cpp/c/pas) [问题描述] A国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有q辆货车在运输货物,司机们想知道每辆 ...
- 洛谷P1967 [NOIP2013提高组Day1T2]货车运输
P1967 货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过 ...
- NOIP2013 提高组 Day1
https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=83%7C30 期望得分:100+100+100=300 实际得 ...
随机推荐
- BZOJ2654 & 洛谷2619:tree——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2654 https://www.luogu.org/problemnew/show/P2619 给你 ...
- POJ.1003 Hangover ( 水 )
POJ.1003 Hangover ( 水 ) 代码总览 #include <cstdio> #include <cstring> #include <algorithm ...
- React获取组件实例
1. 直接new Component() 组件本身也是class,可以new,这样的组件实例意义不大 componentInstance = new Component(); 2. ReactDOM. ...
- 51nod 1296 有限制的排列(DP)
对于一个i,如果要比邻居大,那么i比i-1大,i+1比i小,比邻居小同理.设v[i]=0表示i与i-1的关系无限制,v[i]=1表示a[i-1]>a[i],v[i]=2表示a[i-1]<a ...
- bzoj3694: 最短路(树链剖分/并查集)
bzoj1576的帮我们跑好最短路版本23333(双倍经验!嘿嘿嘿 这题可以用树链剖分或并查集写.树链剖分非常显然,并查集的写法比较妙,涨了个姿势,原来并查集的路径压缩还能这么用... 首先对于不在最 ...
- 面向小数据集构建图像分类模型Keras
文章信息 本文地址:http://blog.keras.io/building-powerful-image-classification-models-using-very-little-data. ...
- Basic Data Structure HDU - 5929 (这个模拟我要报警了)
Mr. Frog learned a basic data structure recently, which is called stack.There are some basic operati ...
- dns随笔(部分转载)
1.allow-notify allow-notify 定义了一个匹配列表并且只应用于从dns区域(slave zone),比如,这个列表是一个ip列表,它 2. 触发同步的过程 http://www ...
- Moodle简介
Moodle简介 一.概述 Moodle是Modular Object-Oriented Dynamic Learning Environment(模块化面向对象动态学习环境)的简称,中文译名为魔灯, ...
- SoC时钟系统简介
1.SoC的时钟获得一般有: * 外部直接输入时钟信号,SoC有个引脚用来输入外部时钟信号,用的很少. * 外部晶振+内部时钟发生器产生时钟,大部分低频单片机都是这么工作的. * 外部晶振+内部时钟发 ...