hdu 1116 欧拉路
一个有向图存在欧拉路:
在有向图中,如果图是弱连通的,并且图中除开两个顶点,其他所有顶点的入度等于出度,并且这两个点中,一个点入度比出度多1,另一个点出度比入度少1,那么该图存在欧拉路,这是个充要条件。
这个题中还要判断是是否连通,用并查集 记录判断下即可。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;int in[50],out[50];
int root[50];void init()
{for(int i=0;i<=25;i++){root[i]=i;}
}int find(int x)
{int temp=root[x];if(x==root[x]) return x;else{return root[x]=find(root[x]);}
}int main()
{int t;scanf("%d",&t);while(t--){int n,i;init();memset(in,0,sizeof(in));memset(out,0,sizeof(out));char s[2000];scanf("%d",&n);getchar();for(i=0;i<n;i++){gets(s);int l1=strlen(s);in[s[0]-'a']++;out[s[l1-1]-'a']++;int ra=find(s[0]-'a');int rb=find(s[l1-1]-'a');if(ra!=rb) root[rb]=ra;}int flag1=0,flag2=0;int flag3=0,time=0;for(i=0;i<=25;i++){if(in[i]||out[i]){if(i==find(i))time++;}if(in[i]-out[i]==1) {flag1++;continue;}if(in[i]-out[i]==-1){flag2++;continue;}if(in[i]!=out[i]) {printf("The door cannot be opened.\n");flag3=1;break;}}if(flag3==0){if(time==1){if(flag1==0&&flag2==0) printf("Ordering is possible.\n");else if(flag1==1&&flag2==1) printf("Ordering is possible.\n");else printf("The door cannot be opened.\n");}elseprintf("The door cannot be opened.\n");}}
}
hdu 1116 欧拉路相关推荐
- 图论--欧拉路,欧拉回路(小结)
在题目中在慢慢细说概念 1.HDU - 3018 Ant Trip 题目大意:又N个村庄,M条道路.问须要走几次才干将全部的路遍历 解题思路:这题问的是有关欧拉路的判定 欧拉路就是每条边仅仅能走一次, ...
- 海亮Day2:差分约束、拓扑排序、欧拉路
海亮第二天,想着说预习一下的,可是昨天10h+都没有把那六道题打完,就打了四道,上午就讲完课了,还是延续昨天的博客,今天接着总结.. 欧拉路 开头就是特别经典的七桥问题,讲欧拉路一定会讲到的问题,也就 ...
- 小A与欧拉路(牛客-树的直径)
题解: 欧拉路:从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边只通过恰好一次 问你走完这树上所有的点最短路径是什么. 因为树是没有环的,所以你走到叶子结点的时候需要往回走,也就是再走一 ...
- 图论-欧拉路(UVA10054)(HDU1116)
首先说一下定义: 欧拉路:从图中某点出发可以遍历全图,图中的每条边通过且只能通过一次. 欧拉回路:具有欧拉路性质且起点位置与终点位置相同. 主要问题就是一个图中是否存在欧拉路,和打印欧拉路路径. 先说 ...
- 模板 - 欧拉路、欧拉回路(一笔画问题)
整理的算法模板合集: ACM模板 目录 非递归版 普通递归版 HierholzersHierholzersHierholzers算法(输出字典序最小的答案) FleuryFleuryFleury算法 ...
- 欧拉回路与欧拉路(模板)
欧拉回路 欧拉图: 就是从任意一个点开始都可以一笔画完整个图 半欧拉图: 必须从某个点开始才能一笔画完整个图. 对于无向图 , 是欧拉图当且仅当 是连通的且没有奇度顶点. 对于无向图 , 是半欧拉图当 ...
- hdu 1116 Play on Words
我的思路: 用俩个数组分别记录出现过的节点的入度和出度,这样只有一个字母的入度比出度大1,一个字母的出度比入度大1,或者是所有有字母的出度和入度都一样,他就是欧拉路 但这样还差了一个联通性的判断 于是 ...
- [欧拉路]CF1152E Neko and Flashback
1152E - Neko and Flashback 题意:对于长为n的序列c和长为n - 1的排列p,我们可以按照如下方法得到长为n - 1的序列a,b,a',b'. ai = min(ci, ci ...
- hihoCoder #1182 欧拉路·三 (变形)
题意: 写出一个环,环上有2^n个格子,每个格子中的数字是0或1,相连着的n个格子可以组成一个数的二进制,要求给出这2^n个数字的序列,使得组成的2^n个数字全是不同的.(即从0到2^n-1) 思路: ...
最新文章
- ArduinoYun教程之通过网络为Arduino Yun编程
- excel粘贴时出现故障_了解这些信息,你会知道在ESXi5.0 的虚拟化系统下文件出现故障时,我们能做些什么?...
- 500万张图片,20万处地标风景,谷歌又放出大型数据集
- 【原创】QT在嵌入式系统中显示中文的方法
- sublime text3 添加到右键菜单
- 工作总结10:解决vuex刷新数据消失
- 机器学习系统:设计与实现 计算图
- 解决方案 | MySQL DBA主从复制出错怎么办?
- 第八章:在Spark集群上掌握比较重要的图操作之Property Operators(1)
- com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused
- C#调用Bing的在线翻译接口Translator
- 用html把图片整体往左挪动,网页制作如何让图片从左到右循环移动
- chrome浏览器扩展打包成crx
- ubuntu 16.04 安装nvidia驱动 下载nvidia官方驱动
- 手机屏幕坏了如何把手机里面的资料取出来_手机进水了怎么办?不同情况处理方法最全归纳!!!...
- CentOS之VI编辑器的常用命令
- 奥利给! loading效果这么搞真的太棒了
- matlab accumulation,Matlab学习笔记(三)
- LDA与QDA分类数据的简单应用(python)
- python库:Pandas学习笔记