★★☆   输入文件: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. skynet源码阅读<6>--线程调度

    相比于上节我们提到的协程调度,skynet的线程调度从逻辑流程上来看要简单很多.下面我们就来具体做一分析.首先自然是以skynet_start.c为入口: static void start(int ...

  2. maven(一)创建一个maven的web项目

    一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven-archetype-webapp后,next 4.填写相应的信息,Packaged是默认创建 ...

  3. 「LuoguP1281」 书的复制(贪心

    Description 大多数人的错误原因:尽可能让前面的人少抄写,如果前几个人可以不写则不写,对应的人输出0 0. 不过,已经修改数据,保证每个人都有活可干. // 现在要把m本有顺序的书分给k给人 ...

  4. 非旋treap (BZOJ1895)

    记个板子,还是挺好用的. #include <bits/stdc++.h> using namespace std; ]; int rt,n,m,l,r,x,A,B,C,t; struct ...

  5. 关于return

    return ;  相当于执行完跳转url后停止,return无返回值仅作停止作用,是指停止当前方法,是方法的终点 return null ;  代表引用类型的空值

  6. vs2008控制台程序运行一闪而过,不显示按任意键继续

    调试运行(F5)而且没插断点.且程序没有暂停的点,就会一闪而过 直接执行(Ctrl+F5),在程序结束前会有“按任意键继续” 当你不想进入调试状态,只想看一看程序执行结果时用ctrl+f5F5会进入调 ...

  7. linux中用无名管道进行文件的读写

    1管道是什么: 水管子大家知道,有两端,在此一端用来读一端用来写,其中一端的输出作为另外一端的输入. 2 函数原型 int pipe(int pipefd[2]);//参数中分别代表的两端 3 例子: ...

  8. 用C++调用C的库函数(转载)

    转自:http://linhs.blog.51cto.com/370259/140927 C++调用C的库函数时,如果头文件定义得不恰当,可能会出现明明某函数在obj文件中存在,但是却发生链接失败的情 ...

  9. E20170507-ts

    prompt  n. 提示; 提示符 object    n. 物体; 目标; 宾语; asterisk  * n. 星号,星状物; Ampersand   & Slash   n. 斜线; ...

  10. bzoj 4036: [HAOI2015]按位或【min-max容斥+FWT】

    其实也不是FWT--我也不知道刷FWT专题问什么会刷出来这个东西 这是min-max容斥讲解:https://www.zybuluo.com/ysner/note/1248287 总之就是设min(s ...