| Time Limit: 5000MS | Memory Limit: 65536K | |
| Total Submissions: 31746 | Accepted: 15391 | 
Description
Input
Output
Sample Input
10 9 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 10 4 2 3 4 5 4 8 5 8 0 0
Sample Output
Case 1: 1 Case 2: 7
Hint
Source
#include<iostream>
#include<cstdio>
using namespace std;
#define maxsize 50050
int count=1;
int pre[maxsize];
int init(int n)
{
    for(int i=1;i<=n;i++)
        pre[i]=i;
}
int find(int x)
{
    if(pre[x]==x) return x;
    int tmp=find(pre[x]);
    return pre[x]=tmp;
}
int Union(int u,int v)
{
    int p=find(u);
    int q=find(v);
    if(p!=q)
        pre[p]=q;
}
int main()
{
    int n,m;
    while(~scanf("%d %d",&n,&m)&&(n||m))
    {
        init(n);
        int a,b;
        while(m--)
        {
            scanf("%d %d",&a,&b);
            Union(a,b);
        }
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            if(find(i)==i)
                    cnt++;
        }
        printf("Case %d: %d\n",count++,cnt);
    }
    return 0;
}
题目大意是:调查n位同学的宗教信仰共有多少种、给出的只有相同的两个人、判断最后共多少种
原文:http://www.cnblogs.com/hellohacker/p/5723298.html