View Code
1 #include<stdio.h> 2 int father[1005]; 3 int findset(int x) 4 { 5 return x==father[x]?x:(father[x]=findset(father[x])); 6 } 7 int main() 8 { 9 int n,m,i,a,b,x,y,k; 10 while(scanf("%d %d",&n,&m)&&n) 11 { 12 13 for(i=1;i<=n;i++) 14 { 15 father[i]=i; 16 } 17 k=0; 18 for(i=0;i<m;i++) 19 { 20 scanf("%d %d",&a,&b); 21 x=findset(a); 22 y=findset(b); 23 if(x!=y) 24 { 25 father[x]=y; 26 } 27 } 28 for(i=1;i<=n;i++) 29 { 30 if(father[i]==i) 31 { 32 k++; 33 } 34 } 35 printf("%d\n",k-1); 36 } 37 return 0; 38 }