一个有向图存在欧拉路:

在有向图中,如果图是弱连通的,并且图中除开两个顶点,其他所有顶点的入度等于出度,并且这两个点中,一个点入度比出度多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. 图论--欧拉路,欧拉回路(小结)

    在题目中在慢慢细说概念 1.HDU - 3018 Ant Trip 题目大意:又N个村庄,M条道路.问须要走几次才干将全部的路遍历 解题思路:这题问的是有关欧拉路的判定 欧拉路就是每条边仅仅能走一次, ...

  2. 海亮Day2:差分约束、拓扑排序、欧拉路

    海亮第二天,想着说预习一下的,可是昨天10h+都没有把那六道题打完,就打了四道,上午就讲完课了,还是延续昨天的博客,今天接着总结.. 欧拉路 开头就是特别经典的七桥问题,讲欧拉路一定会讲到的问题,也就 ...

  3. 小A与欧拉路(牛客-树的直径)

    题解: 欧拉路:从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边只通过恰好一次 问你走完这树上所有的点最短路径是什么. 因为树是没有环的,所以你走到叶子结点的时候需要往回走,也就是再走一 ...

  4. 图论-欧拉路(UVA10054)(HDU1116)

    首先说一下定义: 欧拉路:从图中某点出发可以遍历全图,图中的每条边通过且只能通过一次. 欧拉回路:具有欧拉路性质且起点位置与终点位置相同. 主要问题就是一个图中是否存在欧拉路,和打印欧拉路路径. 先说 ...

  5. 模板 - 欧拉路、欧拉回路(一笔画问题)

    整理的算法模板合集: ACM模板 目录 非递归版 普通递归版 HierholzersHierholzersHierholzers算法(输出字典序最小的答案) FleuryFleuryFleury算法 ...

  6. 欧拉回路与欧拉路(模板)

    欧拉回路 欧拉图: 就是从任意一个点开始都可以一笔画完整个图 半欧拉图: 必须从某个点开始才能一笔画完整个图. 对于无向图 , 是欧拉图当且仅当 是连通的且没有奇度顶点. 对于无向图 , 是半欧拉图当 ...

  7. hdu 1116 Play on Words

    我的思路: 用俩个数组分别记录出现过的节点的入度和出度,这样只有一个字母的入度比出度大1,一个字母的出度比入度大1,或者是所有有字母的出度和入度都一样,他就是欧拉路 但这样还差了一个联通性的判断 于是 ...

  8. [欧拉路]CF1152E Neko and Flashback

    1152E - Neko and Flashback 题意:对于长为n的序列c和长为n - 1的排列p,我们可以按照如下方法得到长为n - 1的序列a,b,a',b'. ai = min(ci, ci ...

  9. hihoCoder #1182 欧拉路·三 (变形)

    题意: 写出一个环,环上有2^n个格子,每个格子中的数字是0或1,相连着的n个格子可以组成一个数的二进制,要求给出这2^n个数字的序列,使得组成的2^n个数字全是不同的.(即从0到2^n-1) 思路: ...

最新文章

  1. ArduinoYun教程之通过网络为Arduino Yun编程
  2. excel粘贴时出现故障_了解这些信息,你会知道在ESXi5.0 的虚拟化系统下文件出现故障时,我们能做些什么?...
  3. 500万张图片,20万处地标风景,谷歌又放出大型数据集
  4. 【原创】QT在嵌入式系统中显示中文的方法
  5. sublime text3 添加到右键菜单
  6. 工作总结10:解决vuex刷新数据消失
  7. 机器学习系统:设计与实现 计算图
  8. 解决方案 | MySQL DBA主从复制出错怎么办?
  9. 第八章:在Spark集群上掌握比较重要的图操作之Property Operators(1)
  10. com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused
  11. C#调用Bing的在线翻译接口Translator
  12. 用html把图片整体往左挪动,网页制作如何让图片从左到右循环移动
  13. chrome浏览器扩展打包成crx
  14. ubuntu 16.04 安装nvidia驱动 下载nvidia官方驱动
  15. 手机屏幕坏了如何把手机里面的资料取出来_手机进水了怎么办?不同情况处理方法最全归纳!!!...
  16. CentOS之VI编辑器的常用命令
  17. 奥利给! loading效果这么搞真的太棒了
  18. matlab accumulation,Matlab学习笔记(三)
  19. LDA与QDA分类数据的简单应用(python)
  20. python库:Pandas学习笔记

热门文章

  1. 高级数据结构与算法 | 并查集(Union-Find)
  2. 第06讲:多路加速,了解多进程基本原理
  3. MySql数据库中的子查询使用
  4. 太卷了~ 八股文,算法张口就来?2022版Java面试手册帮你全拿捏
  5. 如何有效控制 Go 线程数?
  6. Go 超时引发大量 fin-wait2
  7. 指定父对象和信号与槽
  8. 多媒体技术PI 第三期—网络传输线上圆桌
  9. Google Duo采用WaveNetEQ填补语音间隙
  10. 腾讯音视频实验室:基于音视频细分场景的技术创新探索