您的位置:首页 > 其它

hdu1232 并查集

2016-11-21 08:42 162 查看
#include<stdio.h>
int f[1001];
int m, n, a[2], i, num;
int getf(int n){
if(f
==n){
return n;
}else{
f
=getf(f
);
return f
;
}
}
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdu 并查集