How Many Tables

How Many Tables
How Many Tables

#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>

using namespace std;
const int maxn = 1010;
int father[maxn];

int find(int x)
{
	if(father[x]==x)
		return x;
	return find(father[x]);
}

void Union(int x,int y)
{
	x = find(x);
	y = find(y);
	if(x!=y)
		father[y] = x;
} 

int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,m;
		scanf("%d%d",&n,&m);
		
		for(int i=1;i<=n;i++)	//初始化 
			father[i] = i;
		
		int a,b;
		for(int i=1;i<=m;i++)
		{
			scanf("%d%d",&a,&b);
			Union(a,b);
		}
		
		int cnt = 0;
		for(int i=1;i<=n;i++)
		{
			if(father[i]==i)
				cnt++;
		}
		
		printf("%d\n",cnt);
	} 
	return 0;
}