poj 2524 Ubiquitous Religions

来源:互联网 发布:彩虹秒赞 v7源码 编辑:程序博客网 时间:2024/05/01 15:24

 问题描述:


样本输入:

样本输出:





注意事项:刚开始由于漏掉最终输入为(0,0)的情况,导致出现wrong answer ,接着又出现pz(描述错误),是因为多了一个空格在最后输出的时候。

#include <iostream>#include <stdio.h>using namespace std;const int N=50001;int father[N],rank[N];void make_set(int x){for(int i=1;i<=x;i++)   {       father[i]=i;       rank[i]=0;   }}int find_set(int x){if(father[x]==x)  return x;else   father[x]=find_set(father[x]);return father[x];}void unite(int x,int y){int fx=find_set(x);int fy=find_set(y);if(fx==fy)   return;if(rank[fx]>rank[fy])     father[fy]=fx;else{father[fx]=fy;if(rank[fx]==rank[fx])     rank[fy]++;}}int main(){    int m,n,x,y,t=0;    while(scanf("%d%d",&n,&m)!=EOF&&(n||m))    {    t++;    make_set(n);    int ans=n;    for(int i=1;i<=m;i++)    {    scanf("%d%d",&x,&y);     if(find_set(x)!=find_set(y))       {            ans--;            unite(x,y);    }      }    printf("Case %d: %d\n",t,ans);}    return 0;}


0 0
原创粉丝点击