这个题目很简单
#include <stdio.h>
int f[10001];
int n,m;
//初始化标记
void init()
{
for(int i = 1; i <= n; ++i)
f[i] = i;
}
//寻找认识的人之间的联系
int getf(int num)
{
if(num == f[num])
return num;
else
{
f[num] = getf(f[num]);
return f[num];
}
}
//合并认识的人
void merge(int x, int y)
{
int t1,t2;
t1 = getf(x);
t2 = getf(y);
if(t1 != t2)
f[t2] = t1;
}
int main()
{
int T,f1,f2,sum;
scanf("%d",&T);
while(T--)
{
sum = 0;
scanf("%d %d",&n,&m);
init();
for(int i = 1; i <= m; ++i)
{
scanf("%d %d",&f1,&f2);
merge(f1,f2);
}
for(int i = 1; i <= n; ++i)
if(i == f[i])
++sum;
printf("%d\n",sum);
}
return 0;
}