并查集模版题
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int father[50005];
int finds(int c){
if(father[c]!=c)
father[c]=finds(father[c]);
return father[c];
}
void check(int a,int b){
int aa=finds(a);
int bb=finds(b);
father[aa]=bb;
}
int main(){
int n,m;
int i;
int a,b;
int t=1;
while(scanf("%d%d",&n,&m)){
if(n==0&&m==0)
break;
for(i=1;i<=n;i++)
father[i]=i;
for(i=1;i<=m;i++){
scanf("%d%d",&a,&b);
check(a,b);
}
int sum=0;
for(i=1;i<=n;i++)
if(father[i]==i)
sum++;
printf("Case %d: %d\n",t,sum);
t++;
}
return 0;
}