题目地址
http://acm.hdu.edu.cn/showproblem.php?pid=1213
#include<iostream>
using namespace std;
#define MAX 100005
int fa[MAX]; int findHead(int x)
{
while(x!=fa[x])
x=fa[x];
return x;
} void Union(int x,int y)
{
int fa_x=findHead(x);
int fa_y=findHead(y);
if(fa_x!=fa_y) fa[fa_x]=fa_y;
} int main()
{
int T,N,M,A,B,count;
cin>>T;
while(T--){
count=;
cin>>N>>M;
for(int j=;j<=N;j++) fa[j]=j;
for(int i=;i<M;i++){
cin>>A>>B;
Union(A,B);
}
for(int i=;i<=N;i++)
if(fa[i]==i) count++;
cout<<count<<endl;
}
return ;
}