水题进行时。。。。加油(*^__^*) 嘻嘻……。。。
#include<iostream>
#include<string.h>
#include<algorithm>
#include<limits.h>
#define N 1005
#define FOR(i,s,t) for(int i=(s);i<=t;++i)
using namespace std;
int n,m,tot;
int father[N];
void make_set()
{ FOR(i,1,n)
father[i]=i;
tot=n;
}
int find_set(int a)
{ while(a!=father[a])
a=father[a];
return a;
}
void Union(int a,int b)
{ int x=find_set(a);
int y=find_set(b);
if(x!=y)
{ father[y]=x;
tot--;
}
}
int main()
{ while(cin>>n&&n)
{ cin>>m;
make_set();
FOR(i,1,m)
{ int a,b;
cin>>a>>b;
Union(a,b);
}
cout<<tot-1<<endl;
} return 0;
}