码迷,mamicode.com
首页 > 其他好文 > 详细

【luogu P1111 公路修建】 题解

时间:2018-02-25 19:09:06      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:space   nod   cout   problem   names   ret   并查集   name   clu   

题目链接:https://www.luogu.org/problemnew/show/P1111

考察并查集,运用kruskal的思想很好做。注意几个小问题即可。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 int n,m,fa[1000010];
 6 int ans=0,cnt=0;
 7 struct node{
 8     int x,y,t; 
 9 }s[1000010];
10 int cmp(node a,node b)
11 {
12     return a.t<b.t;
13 }
14 int find(int x)
15 {
16     return fa[x]==x?x:fa[x]=find(fa[x]);
17 }
18 int main()
19 {
20     scanf("%d%d",&n,&m);
21     for(int i=1;i<=n;i++)
22     fa[i]=i;
23 
24     for(int i=1;i<=m;i++)
25     scanf("%d%d%d",&s[i].x,&s[i].y,&s[i].t);
26     sort(s+1,s+1+m,cmp);
27 
28     for(int i=1;i<=m;i++)
29     {
30         int xx=find(s[i].x);
31         int yy=find(s[i].y);
32         if(xx!=yy)
33         {
34             fa[yy]=xx;
35             cnt++;
36         }
37         if(cnt==n-1)//注意是点数-1,点数-1条边生成的图是树
38         {
39             cout<<s[i].t;//因为已经是排好序的,所以直接是当前的边序号
40             return 0;
41         }
42     }
43 
44     cout<<-1;
45     return 0;
46 
47 }

 

【luogu P1111 公路修建】 题解

标签:space   nod   cout   problem   names   ret   并查集   name   clu   

原文地址:https://www.cnblogs.com/MisakaAzusa/p/8469910.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!