/*
Hud 1213 How Many Tables?
简单并查集.
*/
#include<cstdio>
int father[1002],N,M;
void Init()
{
for(int i=1;i<=N;i++)
father[i]=i;
}
int Find_Father(int x)
{
if(x!=father[x])
father[x]=Find_Father(father[x]);
return father[x];
}
void Union(int a,int b)
{
int x=Find_Father(a);
int y=Find_Father(b);
if(x!=y) father[x]=y;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int a,b;
scanf("%d%d",&N,&M);
Init();
for(int i=1;i<=M;i++)
{
scanf("%d%d",&a,&b);
Union(a,b);
}
int UnionNum=0;
for(int i=1;i<=N;i++)
if(father[i]==i) UnionNum++;
printf("%d\n",UnionNum);
}
}
Hud 1213 How Many Tables[简单并查集]
最新推荐文章于 2019-06-16 22:16:30 发布