poj 2524 Ubiquitous Religions (并查集)

时间:2022-11-20 20:41:24

题目:http://poj.org/problem?id=2524

题意:问一个大学里学生的宗教,通过问一个学生可以知道另一个学生是不是跟他信仰同样的宗教。问学校里最多可能有多少个宗教。

也就是给定一个图的点数和相应的边,问有多少个连通分量。

 #include<stdio.h>
#include<iostream>
#include<string.h> using namespace std;
int bin[]; int find(int a)
{
if(bin[a]!=a)
return bin[a]=find(bin[a]);
}; int main()
{
int n,m,i,a,b,sum,x=;
while(cin>>n>>m&&(n||m))
{
sum=n;
for(i=; i<=n; i++)
bin[i]=i; for(i=; i<=m; i++)
{
cin>>a>>b;
if(find(a)!=find(b))
{
sum--;
bin[find(a)]=find(b);
}
} printf("Case %d: %d\n",x,sum);
x++;
}
}

跑时有点多,4600MS 低空掠过