poj_2524Ubiquitous Religions
来源:互联网 发布:金牌商家网络评选 编辑:程序博客网 时间:2024/05/19 05:39
Ubiquitous Religions
Time Limit: 5000MS Memory Limit: 65536KTotal Submissions: 19413 Accepted: 9539
Description
There are so many different religions in the world today that it is difficult to keep track of them all. You are interested in finding out how many different religions students in your university believe in.
You know that there are n students in your university (0 < n <= 50000). It is infeasible for you to ask every student their religious beliefs. Furthermore, many students are not comfortable expressing their beliefs. One way to avoid these problems is to ask m (0 <= m <= n(n-1)/2) pairs of students and ask them whether they believe in the same religion (e.g. they may know if they both attend the same church). From this data, you may not know what each person believes in, but you can get an idea of the upper bound of how many different religions can be possibly represented on campus. You may assume that each student subscribes to at most one religion.
You know that there are n students in your university (0 < n <= 50000). It is infeasible for you to ask every student their religious beliefs. Furthermore, many students are not comfortable expressing their beliefs. One way to avoid these problems is to ask m (0 <= m <= n(n-1)/2) pairs of students and ask them whether they believe in the same religion (e.g. they may know if they both attend the same church). From this data, you may not know what each person believes in, but you can get an idea of the upper bound of how many different religions can be possibly represented on campus. You may assume that each student subscribes to at most one religion.
Input
The input consists of a number of cases. Each case starts with a line specifying the integers n and m. The next m lines each consists of two integers i and j, specifying that students i and j believe in the same religion. The students are numbered 1 to n. The end of input is specified by a line in which n = m = 0.
Output
For each test case, print on a single line the case number (starting with 1) followed by the maximum number of different religions that the students in the university believe in.
Sample Input
10 91 21 31 41 51 61 71 81 91 1010 42 34 54 85 80 0
Sample Output
Case 1: 1Case 2: 7并查集水题=。=
#include<iostream>#include<cstdio>#include<map>#include<cstring>#include<cmath>#include<vector>#include<algorithm>#include<set>#include<string>#include<queue>#include <stack>using namespace std;#pragma warning(disable : 4996)const int MAXN = 50005;int father[MAXN], ranks[MAXN];int ans;void Make_set(int n){for(int i = 1; i <= n; i++){father[i] = i;ranks[i] = 0;}}int Find_Set(int x){if(x != father[x]){father[x] = Find_Set(father[x]);}return father[x];}void Unoin_Set(int x, int y){x = Find_Set(x);y = Find_Set(y);if(x == y){return;}if(ranks[x] > ranks[y]){father[x] = y;}else if(ranks[x] < ranks[y]){father[y] = x;}else{father[y] = x;ranks[x]++;}ans--;}int main(){freopen("in.txt", "r", stdin);int n, m, x, y, count = 1;while (scanf("%d %d", &n, &m) != EOF){if(n == 0 && m == 0){break;}Make_set(n);ans = n;while (m--){scanf("%d %d", &x, &y);Unoin_Set(x, y);}printf("Case %d: %d\n", count++, ans);}return 0;}
- poj_2524Ubiquitous Religions
- BIT1061Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- Ubiquitous Religions
- UVA_10583_Ubiquitous Religions
- poj2524Ubiquitous Religions
- Ubiquitous Religions
- 用Jquery 的ajax里边不能识别$(this)
- EBS R12中SLA子分类帐与子模块的关联关系
- iOS开发之常见的语句@synthesize obj=_obj的意义详解(self.的用法)
- 关于ANSI编码
- linux 下find命令详解
- poj_2524Ubiquitous Religions
- 低分辨率、非对齐、视频监控数据中的人脸识别(LFW, YTF)+CVPR2013
- Oracle EBS R12 总帐和子分类账关系详解
- ACE线程管理---ACE_Thread_Manager
- Linux服务器:Linux中VMware虚拟机硬盘空间扩大方法
- 推荐:几款优秀的开源数据挖掘工具
- 纳什均衡
- Android 2.3 Gallery3D添加gif支持——修改代码(三)
- QueryPerformanceFrequency,RDTSC,CPU频率