#include <iostream>
using namespace std;
int f[1000],road;
int find(int i){
while (f[i]!=i)
i=f[i];
return i;
}
void Union(int a,int b){
int A=find(a);
int B=find(b);
if (A!=B) {
f[A]=B;
road++;
}
}
int main(){
int n,m;
while (scanf("%d",&n)!=EOF&&n) {
scanf("%d",&m);
for (int i=1; i<=n; i++)
f[i]=i;
road=0;
while (m--) {
int a,b;
scanf("%d%d",&a,&b);
Union(a, b);
}
cout<<n-1-road<<endl;
}
}
并查集刷题—HDU1232
最新推荐文章于 2020-01-23 20:37:06 发布