HDU 1272 小希的迷宫(并查集)
来源:互联网 发布:windows搭建ss教程 编辑:程序博客网 时间:2024/06/07 02:33
http://acm.hdu.edu.cn/showproblem.php?pid=1272
分析:
1、判断是否成环
2、判断是否连通
如何判断成环 即两个连通的点有相同的公共结点时 此时成环
这个输入输出格式 只能 Orz
AC代码:
#include <stdio.h>#include <string.h>#include <algorithm> using namespace std;int pre[100005];int num[100005];// 用于标记出现的点 int find(int n){ int r=n; while (pre[r]!=r){ r=pre[r]; } int i=n; int temp; while (i!=r){ temp=pre[i]; pre[i]=r; i=temp; } return r;}int jion(int x,int y){ int fx=find(x); int fy=find(y); if (fx!=fy) pre[fx]=fy; else return 0;// 两点有公共结点 成环 return 1;}void init(){// 初始化 for (int i=0;i<=100001;i++) pre[i]=i;}int main (){ int a,b; int len=0; int flag=1; int maxn=-1; init(); memset(num,0,sizeof(num)); while (scanf ("%d%d",&a,&b)&&(a!=-1&&b!=-1)){ if(a!=0&&b!=0){ num[a]=1;// 点出现 num[b]=1; maxn=max(max(a,b),maxn);// 点中的最大值 if(!jion(a,b)) flag=0; } if(a==0&&b==0){// int sum=0; for (int i=1;i<=maxn;i++){ if (num[i])// 找到出现的点 if(find(i)==i) sum++; } if(sum>1)// 有多个根节点 不连通 flag=0; if(flag) printf ("Yes\n"); else printf ("No\n"); flag=1; maxn=-1; init(); memset(num,0,sizeof(num)); } } return 0;}
阅读全文
0 0
- hdu 1272 小希的迷宫 并查集
- hdu 1272 小希的迷宫(并查集)
- hdu 1272 小希的迷宫(并查集)
- hdu 1272 小希的迷宫 (并查集)
- hdu 1272 小希的迷宫(并查集)
- hdu 1272 小希的迷宫(并查集)
- HDU 1272 小希的迷宫 并查集
- HDU 1272小希的迷宫(简单并查集)
- HDU-1272 小希的迷宫 并查集
- HDU 1272-小希的迷宫 并查集初级
- hdu 1272 小希的迷宫 (并查集)
- HDU 1272小希的迷宫 并查集
- 【并查集】 HDU 1272 小希的迷宫
- 并查集 HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫(并查集)
- 【并查集】hdu 1272 小希的迷宫
- hdu 1272小希的迷宫 并查集
- HDU-#1272 小希的迷宫(并查集)
- Hadoop基础教程-第4章 HDFS的Java API(4.6 Java API应用)(草稿)
- VMware 12 安装 macOS S 10.12
- windows10 和 ubuntu16.04 双系统时间的同步问题
- hbase-shell批量命令执行脚本
- JS判断上传的文件类型
- HDU 1272 小希的迷宫(并查集)
- dom解析XML
- Hive学习 第一课
- 2015这一年,我都干嘛了
- gcc命令
- 解决faster-rcnn中训练时assert(boxes[:,2]>=boxes[:,0]).all()的问题
- sklearn之线性模型
- [设计模式]
- CSS选择器