1 #include<iostream> 2 using namespace std; 3 4 int num[10000]; 5 6 int findx(int x) 7 { 8 while(num[x]!=x)x=num[x]; 9 return x; 10 } 11 12 void merge(int x,int y) 13 { 14 int fx=findx(x); 15 int fy=findx(y); 16 if(fx!=fy) num[fx]=fy; 17 } 18 19 int main() 20 { 21 int m,n,x,y,ans=0; 22 while(cin>>n&&n) 23 { 24 cin>>m; 25 for(int i=1;i<=n;i++) 26 num[i]=i; 27 while(m--) 28 { 29 cin>>x>>y; 30 merge(x,y); 31 } 32 ans=-1; 33 for(int i=1;i<=n;i++) 34 if(num[i]==i) ans++; 35 cout<<ans<<endl; 36 } 37 return 0; 38 }