#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1000+5;
int pa[maxn];
void init(int n){
for(int i=0;i<=n;i++)
pa[i]=i;
}
int findset(int x){
if(pa[x]==x) return x;
else return pa[x]=findset(pa[x]);
}
bool same(int x,int y){
return findset(x)==findset(y);
}
void unite(int x,int y){
x=findset(x);y=findset(y);
if(x==y) return;
pa[x]=y;
}
int main(){
//freopen("datain.txt","r",stdin);
int T,n,m;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
init(n);
int x,y;
for(int i=0;i<m;i++){
scanf("%d%d",&x,&y);
unite(x,y);
}
int cnt=0;
for(int i=1;i<=n;i++){
if(findset(i)==i)
cnt++;
}
printf("%d\n",cnt);
}
}
HDU 1213并查集入门题
猜你喜欢
转载自blog.csdn.net/hanker99/article/details/88031108
今日推荐
周排行