#include <stdio.h>
int list[1010];
int findRoot(int x)
{
if(list[x] == x)
return x;
int tmp = findRoot(list[x]);
list[x] = tmp;
return tmp;
}int main()
{
int k;
scanf("%d", &k);
int n, m, a, b;
while(k--)
{
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++)
list[i] = i;
int x1, x2;
for(int i = 0; i < m; i++)
{
scanf("%d %d", &a, &b);
a = findRoot(a); //这儿必须要这样写,不要定义别的变量
b = findRoot(b);
if(a != b)
list[a] = b;
}
int ans = 0;
for(int i = 1; i <= n; i++)
{
if(list[i] == i)
ans++;
}
printf("%d\n", ans);
}
return 0;
}
How Many Tables HDU - 1213(并查集)
猜你喜欢
转载自blog.csdn.net/mch2869253130/article/details/82456898
今日推荐
周排行