#include <bits/stdc++.h>
using namespace std;
/*
这是一个很经典的并查集问题
*/
int Friend[1001];//并查集 Friend[i]代表 i人属于哪个集合
int N, M;
int find_set(int x) {
return x == Friend[x] ? x : find_set(Friend[x]);
}
void Union_set(int x,int y) {
//找出x y隶属的集合
x=find_set(x);
y=find_set(y);
if (x != y) Friend[x] = Friend[y];
}
int main()
{
int T;
cin >> T;
while (T--) {
cin >> N >> M;
//初始化并查集的集
for (int i = 0; i < N; i++) {
Friend[i] = i;
}
for (int i = 0; i < M; i++) {
int f1, f2;
cin >> f1 >> f2;
f1--; f2--;
Union_set(f1, f2);
}
int ans = 0;
for (int i = 0; i < N; i++) {
if (Friend[i] == i)
ans++;
}
cout << ans << endl;
}
}
//关键点在于有多少个i=friend[i]就说明就多少个原始集合