hdu1232 畅通工程

 1 #include<stdio.h>
 2 int bin[1002];
 3 int findx(int x)
 4 {
 5     int r=x;
 6     while(bin[r]!=r)
 7         r=bin[r];
 8     return r;
 9 }
10 void merge(int x,int y)
11 {
12     int fx,fy;
13     fx=findx(x);
14     fy=findx(y);
15     if(fx!=fy)
16     bin[fx]=fy;
17 }
18 int main()
19 {
20     int i,j,m,n,x,y,count;
21     while(scanf("%d",&n),n)
22     {
23         for(i=1;i<=n;i++)
24             bin[i]=i;
25         for(scanf("%d",&m);m>0;m--)
26         {
27             scanf("%d%d",&x,&y);
28             merge(x,y);
29         }
30         for(count=-1,i=1;i<=n;i++)
31             if(bin[i]==i)
32                 count++;
33         printf("%d\n",count);
34     }
35     return 0;
36 }

这题无语了!!

原文地址:https://www.cnblogs.com/shihuajie/p/2636998.html