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 }
这题无语了!!