Drolca

Apologize To Drolca
随笔 - 28, 文章 - 1, 评论 - 6, 引用 - 0
数据加载中……

pku 2524 Ubiquitous Religions

#include <iostream>
using namespace std;

const int maxn=50001;
int father[maxn];
int rank[maxn];
void prepare(int n)
{
    
for(int i=1;i<=n;i++)
    
{
        father[i]
=i;
        rank[i]
=i;
    }

}

int find(int x)
{
    
if(father[x]!=x)
        father[x]
=find(father[x]);
    
return father[x];
}

void union_set(int x,int y)
{
    
int fx,fy;
    fx
=find(x);
    fy
=find(y);
    
if(rank[fx]>rank[fy])
        father[fy]
=fx;
    
else if(rank[fx]<rank[fy])
        father[fx]
=fy;
    
else 
    
{
        father[fy]
=fx;
        rank[fx]
++;
    }

}

int main()
{
    #ifndef ONLINE_JUDGE
    freopen(
"in.txt","r",stdin) ;
    
#endif
    
int n,m,i;
    
int casen=0;
    
while(scanf("%d%d",&n,&m)!=EOF)
    
{
        casen
++;
        
if(n==0&&m==0break;
        prepare(n);
        
int    sum=0;
        
for(i=1;i<=m;i++)
        
{
            
int x,y;
            scanf(
"%d%d",&x,&y);
            union_set(x,y);
        }

        
for(i=1;i<=n;i++)
            
if(father[i]==i) sum++;
        printf(
"Case %d: %d\n",casen,sum);
    }

    
return 0;
}

posted on 2009-08-20 17:28 Drolca 阅读(87) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理