首页 > 其他 > 详细

畅通工程

时间:2019-03-25 23:15:48      阅读:152      评论:0      收藏:0      [点我收藏+]

http://acm.hdu.edu.cn/showproblem.php?pid=1232

并查集入门,模板题

技术分享图片
 1 #include <bits/stdc++.h>
 2 #define maxn 1005
 3 typedef long long ll;
 4 using namespace std;
 5 //---------AC(^-^)AC---------\\
 6 
 7 struct Node
 8 {
 9     int pre;
10     int deep;
11 }node[maxn];
12 int get_pre(int x)
13 {
14     if(node[x].pre==x)
15         return node[x].pre;
16     return node[x].pre=get_pre(node[x].pre);
17 }
18 void unite(int a,int b)
19 {
20     a=get_pre(a);
21     b=get_pre(b);
22     if(node[a].deep>node[b].deep)
23         node[b].pre=a;
24     else{
25         node[a].pre=b;
26         if(node[a].deep==node[b].deep)
27             node[b].deep++;
28     }
29 }
30 void build()
31 {
32     for(int i=1;i<=maxn;i++)
33     {
34         node[i].pre=i;
35         node[i].deep=0;
36     }
37     return ;
38 }
39 int main()
40 {
41     int n,m;
42     while(~scanf("%d",&n)&&n)
43     {
44         build();
45         scanf("%d",&m);
46         for(int i=0;i<m;i++){
47             int x,y;
48             scanf("%d%d",&x,&y);
49             unite(x,y);
50         }
51         int ans=0;
52         for(int i=1;i<=n;i++)
53         {
54             if(node[i].pre==i)
55                 ans++;
56         }
57         printf("%d\n",ans-1);
58     }
59     return 0;
60 }
View Code

 

畅通工程

原文:https://www.cnblogs.com/mile-star/p/10597259.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!