题意:总共有N个朋友,认识的朋友坐在一起,问,总共需要多少张桌子。
解题思路:
简单的并查集。
程序:
#include<stdio.h>
#include<string.h>
int a[1005];
int find(int x)
{
if(a[x]==x)
return x;
else
return a[x]=find(a[x]);
}
void f(int x,int y)
{
int p,q;
p=find(x);
q=find(y);
if(p!=q)
a[q]=a[p];
}
int main()
{
int n,t,m,i,j,x,y;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&m);
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
{
a[i]=i;
}
for(i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
f(x,y);
}
int s=0;
for(i=0;i<n;i++)
{
if(a[i]==i)
s++;
}
printf("%d\n",s);
getchar();
}
return 0;
}