POJ 2524 Ubiquitous Religions (并差集)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2524

 

#include <iostream>//对并差集的不熟悉

#include <cstdio>

 

using namespace std;

 

long p[50010],n,m,tmp,rel[50010];

 

long getRoot(long big)//压缩路径+返回根结点

{

         if(p[big]==big) return big;

         else return p[big]=getRoot(p[big]);

}

 

int main()

{

         long small,big,count=0,ans,i,bigRoot,smallRoot;

         while(scanf("%ld%ld",&n,&m),(n||m))

         {

                   for(i=1;i<=n;i++) p[i]=i;

                   while(m--)

                   {

                            scanf("%ld%ld",&small,&big);

                            if(small>big)

                            {

                                     tmp=small;

                                     small=big;

                                     big=tmp;

                            }

                            if(p[big]==big) p[big]=small;

                            else

                            {

                                     bigRoot=getRoot(big);

                                     smallRoot=getRoot(small);?

                                     //合并树的时候,需要找到根结点进行合并,

                                     //每个点要看成一棵树的一部分,不断合并,而不能仅仅看成点

                                    

                                     if(smallRoot<bigRoot) p[bigRoot]=smallRoot;

                                     else p[smallRoot]=bigRoot;

                            }

                   }

                   for(i=1;i<=n;i++) getRoot(i);

                   memset(rel,0,sizeof(rel));

                   for(i=1;i<=n;i++) rel[p[i]]=1;

                   ans=0;

                   for(i=1;i<=n;i++) ans+=rel[i];

                   printf("Case %ld: %ld\n",++count,ans);

         }

         return 0;

}

posted on   liugoodness  阅读(293)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2010年3月 >
28 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

统计

点击右上角即可分享
微信分享提示