http://poj.org/problem?id=2524
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
using namespace std;
int f[50001];
int ans;
inline int find(int i)
{
if(f[i]!=i)
{
f[i]=find(f[i]);
}
return f[i];
}
int main()
{
int n,m,i,j;
int l=0;
while(cin>>n>>m)
{
l++;
if(!n&&!m)
break;
ans=n;
for(i=1;i<=n;i++)
f[i]=i;
while(m--)
{
cin>>i>>j;
if(find(i)!=find(j))
{
ans--;
f[find(i)]=find(j);
}
}
printf("Case %d: %d\n",l,ans);
}
return 0;
}