★★☆   输入文件:truck.in   输出文件:truck.out   简单对比
时间限制:1 s   内存限制:128 MB

【题目描述】

【来源】

CCF全国信息学奥林匹克联赛(NOIP2013)复赛Day1

最大生成树+LCA

屠龙宝刀点击就送

#include <algorithm>
#include <ctype.h>
#include <cstdio>
#define N 20005
#define M 50005
using namespace std;
void read(int &x)
{
x=;char ch;
for(;!isdigit(ch);ch=getchar());
for(;isdigit(ch);ch=getchar()) x=x*+ch-'';
}
struct E
{
int x,y,z;
bool operator<(E a)const
{
return z>a.z;
}
}e[M<<];
struct Edge
{
int next,to,dis;
Edge (int next=,int to=,int dis=) :next(next),to(to),dis(dis) {}
}edge[M<<];
bool vis[N];
int dep[N],pre[N],val[N],fa[N],dis[N],q,head[M],cnt,n,m;
int find_(int x)
{
return fa[x]==x?x:fa[x]=find_(fa[x]);
}
void insert(int u,int v,int w)
{
edge[++cnt]=Edge(head[u],v,w);
head[u]=cnt;
}
int min(int a,int b) {return a>b?b:a;}
void dfs(int x)
{
vis[x]=true;
for(int u=head[x];u;u=edge[u].next)
{
int v=edge[u].to;
if(!vis[v])
{
pre[v]=x;
val[v]=edge[u].dis;
dep[v]=dep[x]+;
dfs(v);
}
}
}
void swap(int &a,int &b)
{
int tmp=b;
b=a;
a=tmp;
}
int getans(int a,int b)
{
int min1=0x7fffffff,min2=0x7fffffff;
if(dep[a]<dep[b]) swap(a,b);
while(dep[a]>dep[b])
{
min1=min(min1,val[a]);
a=pre[a];
}
while(a!=b)
{
min1=min(min1,val[a]);
a=pre[a];
min2=min(min2,val[b]);
b=pre[b];
}
return min(min1,min2);
}
int main()
{
freopen("truck.in","r",stdin);
freopen("truck.out","w",stdout);
read(n);
read(m);
for(int x,y,z,i=;i<=m;i++)
{
read(e[i].x);
read(e[i].y);
read(e[i].z);
}
for(int i=;i<=n;i++) fa[i]=i;
sort(e+,e++m);
int num=;
for(int i=;i<=m;i++)
{
int fx=find_(e[i].x),fy=find_(e[i].y);
if(fx!=fy)
{
num++;
fa[fy]=fx;
insert(e[i].x,e[i].y,e[i].z);
insert(e[i].y,e[i].x,e[i].z);
if(num==n-) break;
}
}
for(int i=;i<=n;i++) if(!vis[i]) dfs(i);
read(q);
for(int x,y;q--;)
{
read(x);
read(y);
int fx=find_(x),fy=find_(y);
if(fx!=fy) printf("-1\n");
else printf("%d\n",getans(x,y));
}
return ;
}

COGS 1439. [NOIP2013]货车运输的更多相关文章

  1. 洛谷—— P1967 货车运输 || COGS——C 1439. [NOIP2013]货车运输

    https://www.luogu.org/problem/show?pid=1967#sub  ||  http://www.cogs.pro/cogs/problem/problem.php?pi ...

  2. [Luogu 1967] NOIP2013 货车运输

    [Luogu 1967] NOIP2013 货车运输 一年多前令我十分头大的老题终于可以随手切掉了- 然而我这码风又变毒瘤了,我也很绝望. 看着一年前不带类不加空格不空行的清纯码风啊,时光也好像回去了 ...

  3. NOIP2013 货车运输(最大生成树,倍增)

    NOIP2013 货车运输(最大生成树,倍增) A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道 ...

  4. NOIP2013 货车运输 (最大生成树+树上倍增LCA)

    死磕一道题,中间发现倍增还是掌握的不熟 ,而且深刻理解:SB错误毁一生,憋了近2个小时才调对,不过还好一遍AC省了更多的事,不然我一定会疯掉的... 3287 货车运输 2013年NOIP全国联赛提高 ...

  5. NOIP2013 货车运输

    3.货车运输 (truck.cpp/c/pas) [问题描述] A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货 ...

  6. Codevs3278[NOIP2013]货车运输

    3287 货车运输 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond      题目描述 Description A 国有 ...

  7. 【洛谷P1967】[NOIP2013]货车运输

    货车运输 题目链接 显然,从一点走到另一点的路径中,最小值最大的路径一定在它的最大生成树上 所以要先求出最大生成树,再在生成树上找最近公共祖先,同时求出最小值. #include<iostrea ...

  8. noip2013货车运输

    P1967 货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过 ...

  9. NOIP2013货车运输[lca&&kruskal]

    题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多 ...

随机推荐

  1. 666 专题五 AC自动机

    Problem A.Keywords Search d.n个关键字,1段描述,求描述中出现了多少关键字 s. c. /* ac自动机模板 n个关键字,1段描述,求描述中出现了多少关键字 */ #inc ...

  2. CentOS 7中ip命令将逐渐取代 ifconfig

    首先看下图: 要安装ip,请点击这里下载iproute2套装工具 .不过,大多数Linux发行版已经预装了iproute2工具. 你也可以使用git命令来下载最新源代码来编译: $ git clone ...

  3. 在canvas标签和style中定义width和height

    在canvas标签中定义width.height跟在style中定义width.height是不同的.canvas标签的width和height是画布实际宽度和高度,就是在这个上面绘制图形.style ...

  4. Extjs散记

    在元素的后面添加文字,如 汇率:_____%   { fieldLabel : '输入框', xtype : 'textfield', anchor : '80%', listeners: {     ...

  5. string类中运算符重载实现

    C++中预定义的加.减等运算符的操作对象只能是基本的数据类型.如果要在用户自定义的类型对象上应用同样的运算符,就需要通过运算符重载来重新定义其实现,使它能够用于自定义类型执行特定的操作,所以运算符重载 ...

  6. 【BZOJ 3224】 普通平衡树

    [题目链接] 点击打开链接 [算法] 本题是Splay模板题,值得一做! [代码] #include<bits/stdc++.h> using namespace std; #define ...

  7. BZOJ3895 rock

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3895 看这题感觉好神. SG函数,dp....好像都不行呀. 最后去膜拜题解发现记忆化搜索 囧 ...

  8. C++ 多项目dll调用-隐式

    将DAA人脸检测做成动态库以便其他程序调用,采用隐式调用完成. 给出部分关于dll制作的关键代码: 1.DLL 多项目DLL编写注意将其他相关项目设置成静态库,以及各库涉及的版本一致性. DLL.h ...

  9. JSP有哪些内置对象

    JSP有哪些内置对象? 1.page:JSP网页本身; 2.request:用户端请求,此请求会包含来自GET/POST请求的参数; 3.session:请求有关的会话; 4.application: ...

  10. AtCoder Regular Contest 061 DSnuke's Coloring

    http://arc061.contest.atcoder.jp/tasks/arc061_b 题意: H行W列的矩阵中,然后挖了n个洞,输出j(0-9)行,对于第i行输出,有多少个3*3区域中有i个 ...