#include <cstdio>
using namespace std;
const int MAXN = 1000 + 10;
int fa[MAXN], rank[MAXN];
int t, m, n;
int find(int x) {
return fa[x] == x ? x : fa[x] = find(fa[x]);
}
void init() {
for (int i = 0; i <= n; ++i) {
fa[i] = i;
rank[i] = 1;
}
}
void join(int x, int y) {
int a = find(x);
int b = find(y);
if (a == b) {
return;
}
if (rank[a] > rank[b]) {
fa[b] = a;
rank[a]++;
} else {
fa[a] = b;
rank[b]++;
}
}
int slove() {
int res = 0;
for (int i = 1; i <= n; ++i) {
if (fa[i] == i) {
res++;
}
}
return res;
}
int main() {
scanf("%d", &t);
while (t--) {
int a, b;
scanf("%d%d", &n, &m);
init();
while(m--) {
scanf("%d%d", &a, &b);
join(a, b);
}
printf("%d\n", slove());
}
return 0;
}
How Many Tables HDU - 1213
最新推荐文章于 2021-12-07 22:09:42 发布