博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1325 并查集
阅读量:6792 次
发布时间:2019-06-26

本文共 1760 字,大约阅读时间需要 5 分钟。

这个题和小希的迷宫很相似但是差一些 有向图和无向图

因为如果是一棵树 根只能有一个 因为是有向图 根肯定是最上面的 它的入度是0 这样的点只能有一个

不能有环 

#include
#include
#include
#include
using namespace std;int fa[100050];int vis[100050];int ru[100050];int chu[100050];bool ok;void init(){ for(int i=0;i<100040;i++) { fa[i]=i; vis[i]=0; ru[i]=0; chu[i]=0; } ok=true;}int find(int i){ return fa[i]==i?i:find(fa[i]);}void un(int a,int b){ int aa=find(a); int bb=find(b); if(aa==bb) ok=false; else fa[aa]=bb; return ;}int main(){ int t=0; int a,b; while(~scanf("%d%d",&a,&b)) { if(a<0&&b<0) break; t++; init(); if(a==0&&b==0) printf("Case %d is a tree.\n",t); else { un(a,b); vis[a]=1; vis[b]=1; chu[a]++; ru[b]++; while(~scanf("%d%d",&a,&b)) { if(a==0&&b==0) break; un(a,b); vis[a]=1; vis[b]=1; chu[a]++; ru[b]++; } int ma=0; int yi=0; int er=0; for(int i=0;i<100040;i++) { if(vis[i]==1) { if(fa[i]==i) { ma++; } if(ru[i]==0) { yi++; } } } if(ma==1&&yi==1&&ok==true) printf("Case %d is a tree.\n",t); else printf("Case %d is not a tree.\n",t); } }}

  

转载于:https://www.cnblogs.com/rayrayrainrain/p/5189837.html

你可能感兴趣的文章
Sublime-text gitHub 问题收集
查看>>
muduo多机协作网络编程示例一:单词计数及排序
查看>>
POJ-2029 Get Many Persimmon Trees 树状数组
查看>>
扩展方法必须在非泛型静态类中定义
查看>>
Winform开发框架之通用短信邮件通知模块
查看>>
Jquery插件汇集:
查看>>
线段树成段更新之延迟更新
查看>>
[代码分享] wxWidgets - wxDir 遍历文件
查看>>
Apache Tika源码研究(二)
查看>>
commandlinefu.com
查看>>
sjtu 1077 加分二叉树
查看>>
黑马程序员-JAVA基础-String 类(上)
查看>>
byte struct 互转
查看>>
像我这样的人,有木有呀,早上六点半起床,测试代码呀!!!
查看>>
uva 10714 Ants
查看>>
VC6打开一个文件或工程的时候,会导致VC6崩溃而关闭
查看>>
[WorldWind学习]11.TerrainViewer插件和双线程
查看>>
linux系统硬件配置查看方法 [转]
查看>>
播放视频android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法...
查看>>
IT人 不能一辈子靠技术生存[转]
查看>>