用总人数减去合并的次数得到的就是所要求的:
#include<stdio.h>
#include<string.h>
int num[50001];
int find(int x)
{
return x==num[x]?x:num[x]=find(num[x]);
}
int main()
{
int n,m,t=1;
while(~scanf("%d%d",&n,&m)&&n+m)
{
for(int i=0;i<=n;i++)
{
num[i]=i;
}
int k=0,a,b;
while(m--)
{
scanf("%d%d",&a,&b);
int xx=find(a);
int yy=find(b);
if(yy!=xx)
{
num[yy]=xx;
k++;
}
}
printf("Case %d: %d\n",t++,n-k);
}
return 0;
}

本文深入探讨了程序开发的核心概念、关键技术和最佳实践,涵盖了从基础编程到高级算法的广泛主题,旨在帮助开发者提高编程技能并解决实际问题。

被折叠的 条评论
为什么被折叠?



