求合并后的集合个数。
include<stdio.h>
#include<string.h>
int pre[1005];
int Set;
int find(int x)
{
int r = x;
while(r != pre[r])
r = pre[r];
int i = x,j;
while(i != r)
{
j = pre[i];
pre[i] = r;
i = j;
}
return r;
}
void join(int a,int b)
{
int r_a = find(a);
int r_b = find(b);
if(r_a != r_b)
{
pre[r_a] = r_b;
Set--;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&n,&m);
Set = n;
memset(pre,0,sizeof(pre));
for(int i = 1; i <= n; i++)
pre[i] = i;
while(m--)
{
int a,b;
scanf("%d%d",&a,&b);
join(a,b);
}
printf("%d\n",Set);
}
return 0;
}