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