题意:有一群小朋友要吃饭,认识或者间接认识的人才可以做到一张桌子(每张桌子可以座无限多的人)上,
输入n个人和m组关系,问最少需要多少张桌子?
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1005;
int n,m,f[MAXN];
void init()
{
for(int i=0;i<=n;i++)
{
f[i]=i;
}
}
int find(int x)
{
if(f[x]==x)
{
return x;
}
f[x]=find9f[x]);
return f[x];
}
void Union(int a,int b) {
int root1=find(a);
int root2=find(b);
f[root1]=root2; }
int main()
{
int T;
scanf("%d,&T);
while(T--) {
scanf("%d%d",&n,&m);
init();
for(int i=0;i<m;i++) {
int a,b; scanf("%d%d",&a,&b);
Union();
}
int ans=0;
for(int i=1;i<=n;i++) {
if(f[i]=i) ans++;
}
printf("%d\n",ans);
}
return 0;
}