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

POJ 2524 Ubiquitous Religions(并查集)

2018-01-30 08:43 507 查看
http://poj.org/problem?id=2524

分析:

并查集模板题

AC代码:

#include <stdio.h>
int pre[50005];
int find(int n){
 int flag=n;
 while (pre[flag]!=flag){
  flag=pre[flag];
 }
 int temp;
 int i=n;
 while (i!=flag){
  temp=pre[i];
  pre[i]=flag;
  i=temp;
 }
 return flag;
}
/*
int find(int x)
{
    if(x==pre[x])
        return x;
    return pre[x]=find(pre[x]);
}
*/
void join(int x,int y){
 int fx=find(x);
 int fy=find(y);
 if (fx!=fy){
  pre[fx]=fy;
 }
}
int main (){
 int n,m;
 int Case=1;
 while (scanf("%d%d",&n,&m)&&(n||m)){
  for (int i=1;i<=n;i++)
   pre[i]=i;
  int x,y;
  for (int i=0;i<m;i++){
   scanf ("%d%d",&x,&y);
   join(x,y);
  }
  int count=0;
  for (int i=1;i<=n;i++){
   if(pre[i]==i)
    count++;
  }
  printf ("Case %d: %d\n",Case++,count);
 }
 return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: