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 实际得 ...
随机推荐
- SPFA判負環
馬上就退役了,時間不足就不多介紹了 反正DFS是會T飛的,BFS就沒關係了qwq #include<cmath> #include<queue> #include<cst ...
- Python 源码剖析(五)【DICT对象】
五.DICT对象 1.散列表概述 2.PyDictObject 3.PyDictObject的创建与维护 4.PyDictObject 对象缓冲池 5.Hack PyDictObject 这篇篇幅较长 ...
- html dom与javascript的关系 -我们用JavaScript对网页(HTML)进行的所有操作都是通过DOM进行的
一,什么是DOM (参考源http://www.cnblogs.com/chaogex/p/3959723.html) DOM是什么 DOM全称为The Document Object Model,应 ...
- URL 编码规则
规则: 1.将空格转换为加号(+) 2.对0-9.a-z.A-Z之间的字符保持不变 3.对于所有其他的字符,用这个字符的当前当前字符集编码在内存中的十六进制格式表示,并在每一个字节前加上一个百分号(% ...
- [HNOI2012][BZOJ2732] 射箭 [二分+半平面交]
题面 BZOJ题面 思路 半平面交代码讲解戳这里,用的就是这道题 我们射箭的函数形如$y=Ax^2+Bx$ 考虑每一个靶子$(x_0,y_1,y_2)$,实际上是关于$A,B$的不等式限制条件 我们只 ...
- BZOJ4104 [Thu Summer Camp 2015]解密运算 【乱搞】
题目链接 BZOJ4104 题解 我们将已知字符排序,由循环就可以得到一个对应关系 如样例就是: 0->第5行 1->第1行 1->第2行 1->第3行 1->第5行 2 ...
- BZOJ3172 & 洛谷3966 [Tjoi2013]单词 【fail树】
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 4293 Solved: 2083 [Submit][Stat ...
- 非代码抽取的dex加固脱壳
常见的非代码抽取的dex加固,可以通过修改或者hook源码中的dex解析函数拿到目标dex完成脱壳.该dex解析函数为DexFile* dexFileParse(const u1* data, siz ...
- maven打包jar源码至私服
1. setting文件 配置私服中设置的用户和密码 <servers> <server> <id>releases</id> <username ...
- CentOS安装pip
环境 操作系统:CentOS 6.7 32-bit Python:2.6.6 安装 先安装setuptools和wget yum -y install wget wget https://pypi.p ...