#include<stdio.h>
int f[1001];
int m, n, a[2], i, num;
int getf(int n){
if(f[n]==n){
return n;
}else{
f[n]=getf(f[n]);
return f[n];
}
}
void merge(int x, int y){
int t1, t2;
t1 = getf(x);
t2 = getf(y);
if(t1 != t2){
f[t2] = t1;
}
}
void init(){
num = 0;
for(i = 1; i <= m; i++){
f[i] = i;
}
}
int main()
{
while(scanf("%d %d", &m, &n)){
if(m==0){
break;
}
init();
while(n--){
scanf("%d %d", &a[0], &a[1]);
merge(a[0], a[1]);
}
for(i = 1; i <= m; i++){
if(f[i] != i){
continue;
}
else{
num++;
}
}
printf("%d\n", num-1);
}
return 0;
}
hdu1232 并查集
最新推荐文章于 2019-10-13 10:19:40 发布