标签:
| 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