POJ 2524 Ubiquitous Religions (并查集 II)

来源:互联网 发布:js实现点击显示和隐藏 编辑:程序博客网 时间:2024/05/04 02:37

点击此处打开原题链接:http://poj.org/problem?id=2524



题目大意:

学校里所有人都信宗教,每个人只能信一种宗教。

输入n个人m组数,每组数代表2个人信的是一种宗教。

问学校里存在多少种宗教。


附AC源代码:

#include <stdio.h>#define M 50001int father[M],Array[M];int find (int x){if (father[x] != x) father[x] = find(father[x]);return father[x];} int main(int argc, char *argv[]){int n,m,a,b,i=0,index;while (scanf ("%d%d",&n,&m) != EOF){int sum = 0;if (n == 0 && m == 0)  break;else { for (index =1; index <= n; ++index){ father[index] = index; Array[index] =0; }for (index =1; index <= m; ++index){scanf ("%d%d",&a,&b);a = find(a),b = find(b),father[a] = b;}for (index =1; index <= n; ++index){find(index);Array[father[index]] = 1;}for (index =1; index <= n; ++index)if (Array[index]) ++sum;printf ("Case %d: %d\n",++i,sum);}}return 0;}