您的位置:首页 > 其它

hdu1213(并查集复习)

2015-08-13 13:06 375 查看
这道确实太简单了,复习一下。

#include <stdio.h>
#include <iostream>
#include <queue>
#include <set>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
#define N 1100
#define M 5000
int p
;
int find(int x){
return x==p[x]?x:find(p[x]);
}
int main(){
int T,m,n;
int a,b,ans;
scanf("%d",&T);
while(T--){

scanf("%d%d",&n,&m);
ans=n;
for(int i=1;i<=n;i++) p[i]=i;
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
int x=find(a);
int y=find(b);
if(x!=y){ p[y]=x;ans--;}
}//for
printf("%d\n",ans);
}//while
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: