题意:给定一系列的单词,这些单词要使用类似与成语接龙的方式将他们连接起来,现在问是否存在这样一个通路。

解法:为什么这种题目刚看起来总是像那个什么哈密顿回路呢?欧拉回路主要解决对边的遍历问题,因此我们需要将已知条件转移到边上的信息即可。对于一个单词acm,那么就连接一条从a到m的边,那么走这条边也就访问了这个单词。有向图判定是否存在欧拉路径的方法是:在保证图连通的情况下,所有点的入度等于出度或者是存在两个点,一个点入度比出度大1,另一个点出度比入度大1。

代码如下:

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;int set[30];
int N, odd, in[30], out[30];
int hav[30];
vector<int>v;int find(int x) {return set[x] = x == set[x] ? x : find(set[x]);
}void merge(int a, int b) {set[a] = b;
}int main() {int T, ok;char str[1005];scanf("%d", &T);while (T--) { for(int i = 0; i < 26; ++i) {hav[i] = 0;set[i] = i;    }v.clear();scanf("%d", &N);ok = 0;memset(in, 0, sizeof (in));memset(out, 0, sizeof (out));for (int i = 0; i < N; ++i) {scanf("%s", str);char a = str[0]-'a', b = str[strlen(str)-1]-'a';++out[a];++in[b];hav[a] = hav[b] = 1;merge(find(a), find(b));}for (int i = 0; i < 26; ++i) {if (set[i] == i && hav[i]) {++ok;}if (in[i] != out[i]) {v.push_back(i);}}if (ok != 1) {puts("The door cannot be opened.");continue;}if (v.size() > 2) {puts("The door cannot be opened.");    } else if (v.size() == 2){if ((in[v[0]]-out[v[0]])*(in[v[1]]-out[v[1]]) == -1) {puts("Ordering is possible.");} else {puts("The door cannot be opened.");}} else {puts("Ordering is possible.");    }}return 0;
}

POJ-1386 Play on Words 有向图欧拉通路判定相关推荐

  1. 【POJ - 2337】Catenyms(欧拉图相关,欧拉通路输出路径,tricks)

    题干: A catenym is a pair of words separated by a period such that the last letter of the first word i ...

  2. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  3. #1176 : 欧拉路·一(欧拉通路的判定)

    #1176 : 欧拉路·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho最近在玩一个解密类的游戏,他们需要控制角色在一片原始丛林里面探险,收集道具,并找 ...

  4. 图论 —— 图的遍历 —— 欧拉通路与欧拉回路问题

    [基本概念] 欧拉通路:通过图中所有边一次且仅一次行遍所有顶点的通路 欧拉回路:通过图中所有边一次且仅一次行遍所有顶点的回路 欧拉图:具有欧拉回路的图 半欧拉图:具有欧拉通路而无欧拉回路的图 奇度点: ...

  5. 欧拉图——欧拉通路和欧拉回路

    定义: 欧拉通路 (欧拉迹):通过图中每条边且只通过一次,并且经过每一顶点的通路. 欧拉回路 (欧拉闭迹):通过图中每条边且只通过一次,并且经过每一顶点的回路. 欧拉图:存在欧拉回路的图. 简单说欧拉 ...

  6. 欧拉回路 欧拉通路 欧拉回路图

    来源 一.定义 对于无向图: 1) 设G是连通无向图,则称经过G的每条边一次并且仅一次的路径为欧拉通路: 2) 如果欧拉通路是回路(起点和终点是同一个顶点),则称此回路为欧拉回路(Euler circ ...

  7. 欧拉通路、欧拉回路、欧拉图和半欧拉图以及 Hierholzer 算法

    概念:欧拉通路(又称欧拉路径).欧拉回路.欧拉图和半欧拉图 定义 通过图中所有边恰好一次且行遍所有顶点的通路称为欧拉通路(又称欧拉路径). 通过图中所有边恰好一次且行遍所有顶点的回路称为欧拉回路. 具 ...

  8. 图系列(四)欧拉通路与欧拉回路

    欧拉通路与欧拉回路 之前,写了图系列一二三,现在出四啦!这也意味着,对于图的部分,可以说50%以上常用的内容就已经过了一遍了.欧拉路的部分会稍微难一点,主要是我们要和定义打交道了.至于其他图的理论,我 ...

  9. ZOJ - 4122 Triangle City(最短路+欧拉通路+思维)

    题目链接:点击查看 题目大意:给出一张三角形的无向图,如下图所示 求出从点 ( 1 , 1 ) 到点 ( n , n ) 找到一条最长路,且每条边至多遍历一次,输出最长路的权值以及路径 题目分析:点 ...

最新文章

  1. 论文笔记之:Generative Adversarial Text to Image Synthesis
  2. Squid代理服务器(二)
  3. ASP.NET 3.5 的 ListView 控件与 CSS Friendly
  4. [JOYOI] 1124 花店橱窗
  5. Vue 脚手架中的.eslintrc.js代码规范 的解决
  6. divcss布局模板代码_CSS3布局(前端所必须要掌握)
  7. Matlab--max,min函数的用法
  8. python属于私有属性_Python私有属性和受保护的属性原理解析
  9. 2018.9--2019.7 Java开发工作中的经验和教训之db2数据库操作
  10. 两种添加数据到DropDownList 控件的方法
  11. VUe Eelement-ui 兼容es6 兼容IE9+ 报错:SCRIPT1003: 缺少 ':’
  12. CocoaPods 的安装(第三方开源类库)
  13. 谷粒商城 Day04 sku与spu接口
  14. 小白入门web前端360必问--Html标签语义化可能最全,越段位之神器;
  15. 计算机相关学科查找英文paper的一般方法
  16. Raspberry Pi 4和 Raspberry Pi 4B的区别_8GB内存的树莓派4来啦!国内售价589元,官方还推出配套64位系统...
  17. 英语 Yang liang 120 --180
  18. PUCCH(3)matlab验证ZC序列的性质
  19. 【Android控件属性记录】
  20. mac苹果灯亮出风口烫开不了机解决办法

热门文章

  1. Spring Boot错误errMsg: request:ok
  2. Linux初学:(二)Shell环境与命令基础
  3. 关于AutoResetEvent 和ManualResetEvent
  4. ORACLE B-TREE(B树)索引
  5. 互联网基础设施服务商的发展之道www.shzhenai.com
  6. 转:Excel导出问题(导出时不去掉前面的0)
  7. jQuery和Prototype兼容问题
  8. LabVIEW串口接收实例
  9. 深入理解Windows消息循环
  10. 安卓手机反应慢又卡怎么办_手机卡顿反应慢怎么解决?