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 实际得 ...
随机推荐
- 【bzoj1441】Min 扩展裴蜀定理
题目描述 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 输入 第一行给出数字N,代表有N个数 下面一行给出N个数 输出 S ...
- OI入门
学习顺序: 1.高精度计算: 高精度计算(一) 高精度计算练习1 高精度计算(二) 高精度计算练习2 2.递推 3.递归 递归算法 递归练习 4.搜索与回溯 搜索与回溯算法(一) 搜索与回溯练习(一) ...
- P1315 观光公交
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
- bzoj3110: [Zjoi2013]K大数查询 【树套树,标记永久化】
//========================== 蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/ 转载要声明! //=============== ...
- POJ3666:Making the Grade——题解
http://poj.org/problem?id=3666 题目大意:给n个数,每次操作可使一个数+1或-1,求最小操作数使得序列不下降或不上升. —————————————————————— 思路 ...
- BZOJ4337:[BJOI2015]树的同构——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4337 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根, ...
- maven打包jar源码至私服
1. setting文件 配置私服中设置的用户和密码 <servers> <server> <id>releases</id> <username ...
- The Shortest Path in Nya Graph HDU - 4725
Problem Description This is a very easy problem, your task is just calculate el camino mas corto en ...
- xshell如何让窗口并列排序
如图所示:
- saltstack:multi-master configuration
官方手册地址:http://docs.saltstack.com/topics/tutorials/multimaster.html 总结起来,有以下几步: Create a redundant ma ...