您的位置:首页 > 产品设计 > UI/UE

poj 2524 Ubiquitous Religions

2012-04-02 13:32 369 查看
并查集

#include<iostream>
#include<cstdio>
using namespace std;

int f[50001];//,r[30001];
int m,n;
void Init()
{
for(int i=1;i<=m;++i)    f[i]=i;
//memset(r,0,sizeof(r));
}

int father(int k)
{
if(k !=f[k])
return father(f[k]);
return f[k];
}

void unionset(int k,int t)
{
int i=father(k);
int j=father(t);
f[j]=i;
/*if(r[i]<r[j])
f[i]=j;
else
{
f[j]=i;
if(r[i]==r[j])
r[i]++;
}*/

}
void readData()
{
int i,j,k,t,num;
num=1;
while(cin>>m>>n)
{
if(m==0 && n==0) break;
Init();//
for(int i=1;i<=n;++i)
{
scanf("%d%d",&k,&t);
if(father(k)!=father(t))
{
unionset(k,t);
}
}
int ans=0;
for(i=1;i<=m;++i)
{
if(i==f[i]) ans++;
}
printf("Case %d: %d\n",num++,ans);
}
}
int main()
{
//Init();
//freopen("a.txt","r",stdin);
readData();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: