并查集的简单应用,算法也不用优化就能AC了。
#include<stdio.h>
#include<string.h>
int fa[1001];
int n,m,ans;
int find(int a)
{
return fa[a]==-1?a:fa[a]=find(fa[a]);
}
void un(int u,int v)
{
int x=find(u);
int y=find(v);
if(x!=y){fa[x]=y;ans--;}
}
int main()
{
int T,i,k,j,u,v;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
memset(fa,-1,sizeof(fa));
ans=n;
for(i=0;i<m;i++)
{
scanf("%d%d",&u,&v);
un(u,v);
}
printf("%d\n",ans);
}
return 0;
}