①注意father数组初始化是从1到n进行初始化
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 1005;
int father[N];
int findfather(int a){
if(a == father[a]) return a;
else{
int f = findfather(father[a]);
father[a] = f;
return f;
}
}
void Union(int a, int b){
int a1 = findfather(a);
int b1 = findfather(b);
if(a1 != b1){
father[b1] = a1;
}
}
int main()
{
int T;
cin>>T;
for(int r = 0; r < T; r ++){
int n, m, rv = 0;
cin>>n>>m;
for(int i = 1; i <= n; i ++){
father[i] = i;
}
while(m--){
int a,b;
cin>>a>>b;
Union(a,b);
}
for(int i = 1; i <= n; i ++){
father[i] = findfather(i);
}
for(int i = 1; i <= n; i ++){
if(i == father[i]){
rv++;
}
}
cout<<rv<<endl;
}
return 0;
}