#include<iostream>
using namespace std;
int city[1001];
int find(int w)
{
if(city[w]!=w) w=city[w];
return w;
}
void cat(int a,int b)
{ int tempa,tempb;
tempa=find(a);
tempb=find(b);
if(tempa!=tempb) city[tempa]=tempb;
return ;
}
int head(int xx[],int n)
{ int counter=0;
for(int i=1;i<=n;i++){
if(xx[i]==i) counter++;
}
return counter;
}
int main()
{
int N,M;
while(cin>>N>>M){
if(N==0) break;
for(int i=1;i<=N;i++) city[i]=i;
for(int i=0;i<M;i++){
int x,y;
cin>>x>>y;
cat(x,y);
}
int aval;
aval=head(city,N);
cout<<aval-1<<endl;
}
return 0;
}
并查集
最新推荐文章于 2024-08-19 22:30:22 发布