【题目分析】
并查集。
【代码】
#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int f[50001],n,m,kase=0;
inline int gf(int k)
{
if (f[k]==k) return k;
else return f[k]=gf(f[k]);
}
int main()
{
while (scanf("%d%d",&n,&m)!=EOF&&n&&m)
{
int ans=0;
for (int i=1;i<=n;++i) f[i]=i;
for (int i=1;i<=m;++i)
{
int x,y;
scanf("%d%d",&x,&y);
int fx=gf(x),fy=gf(y);
f[fx]=fy;
}
for (int i=1;i<=n;++i) if (f[i]==i) ans++;
printf("Case %d: %d\n",++kase,ans);
}
}