poj 2524 Ubiquitous Religions 并查集问题
题目连接 :http://poj.org/problem?id=2524
题目大意。已知有n个大学生,其中有m对宗教信仰相同的学生,请你估算这n个学生中最多有多少种宗教信仰。
不多说直接上代码~
View Code
#include<stdio.h> int set[50005]; int find(int x) { int r = x; while(set[r] != r) { r = set[r]; } return r; } void merge(int a,int b) { a = find(a); b = find(b); if(a == b) return ; else set[a] = b; } int main() { int i,j,n,a,m,b; j = 0; while(scanf("%d %d",&n,&m)&&n||m) { j++; for(i = 1;i <= n;i++) set[i] = i; while(m--) { scanf("%d %d",&a,&b); merge(a,b); } int count = 0; for(i =1;i <= n;i++) if(set[i] == i) count++; printf("Case %d: %d\n",j,count); } return 0; }