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;
}

 

posted on 2012-02-22 18:55  夜->  阅读(135)  评论(0编辑  收藏  举报