首页 > 其他 > 详细

UVA 1160 - X-Plosives

时间:2016-10-07 07:37:47      阅读:284      评论:0      收藏:0      [点我收藏+]

题目地址

并查集

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 const int Nmax=1e5+10;
 5 int f[Nmax];
 6 int a,b;
 7 int ans;
 8 
 9 
10 void init()
11 {
12     ans=0;
13     for(int i=0;i<Nmax;i++)
14         f[i]=i;
15 }
16 
17 int find(int x)
18 {
19     if(f[x]!=x)
20         f[x]=find(f[x]);
21     return f[x];
22 }
23 
24 int merge(int a,int b)
25 {
26     int r1=find(a),r2=find(b);
27     if(r1!=r2)
28     {
29         f[r1]=r2;
30         return 1;
31     }
32     return 0;
33 }
34 
35 int main()
36 {
37     while(scanf("%d",&a)!=EOF)
38     {
39         if(a==-1)
40         {
41             printf("0\n");
42             continue;
43         }
44         scanf("%d",&b);
45         init();
46         if(!merge(a,b))
47             ans++;
48         while(1)
49         {
50             scanf("%d",&a);
51             if(a==-1)
52                 break;
53             scanf("%d",&b);
54             if(!merge(a,b))
55                 ans++;
56         }
57         printf("%d\n",ans);
58     }
59     return 0;
60 }

 

UVA 1160 - X-Plosives

原文:http://www.cnblogs.com/BBBob/p/5935336.html

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