题意

单词链接, 如acm, malform, mouse可以链接

思路

欧拉回路

1.图连通
2.图中所有点的出度==入度,或只有两个奇度点并且一个点的入度比出度大1(终点),另一个点的出度比入度大1(起点)

调试的时候遇到几个比较坑的数据 需要特殊处理判断一下

input
3
2
aa
aaa
1
ab
2
aa
bb
output
Ordering is possible.
Ordering is possible.
The door cannot be opened.

AC代码

#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;int in[30], out[30], G[30][30], vis[30];void dfs(int a)
{vis[a] = 1;for (int b = 0; b < 26; b++)if (!vis[b] && G[a][b])dfs(b);
}int main()
{int T, n;char s[1000+10];scanf("%d",&T);while(T--){bool ok = true, ok2 = false;memset(vis, 0, sizeof(vis));memset(G, 0, sizeof(G));memset(in, 0, sizeof(in));memset(out, 0, sizeof(out));scanf("%d",&n);if(n==1)    ok2 = true;while(n--){scanf("%s",s);int len = strlen(s);int a = s[0]-'a', b = s[len-1]-'a';G[a][b]++;in[b]++, out[a]++;}if(ok2){puts("Ordering is possible.");continue;}int cnt1 = 0, cnt2 = 0, cnt = 0;for( int i = 0; i < 26; i++ ){if( in[i] == out[i] )   continue;if( in[i] + 1 == out[i] )   cnt1++;else if( out[i] + 1 == in[i] )  cnt2++;else{ ok = false;  break;}}if(cnt1 && cnt2 && cnt1+cnt2 > 2)   ok = false;int num = 0;if(ok){for( int i = 0; i < 26; i++ )if( out[i] ){dfs(i);break;}for( int i = 0; i < 26; i++ )if( in[i] + out[i] )if( !vis[i] ){ok = false;break;}}if(ok) puts("Ordering is possible.");else puts("The door cannot be opened.");}return 0;
}

转载于:https://www.cnblogs.com/JinxiSui/p/9740594.html

UVa 10129 - Play on Words (欧拉回路, DFS)相关推荐

  1. Play on Words UVA - 10129 (有向图欧拉路径)

    Play on Words UVA - 10129 题意:n个单词,问能否收尾相连形成一条链. 把单词首尾字母看做点,单词内部连一条边,问是否存在欧拉路径. 用并查集,当且仅当只有一个点的出度比入度大 ...

  2. UVA - 10129 Play on Words(欧拉回路+并查集)

    2.解题思路:本题利用欧拉回路存在条件解决.可以将所有的单词看做边,26个字母看做端点,那么本题其实就是问是否存在一条路径,可以到达所有出现过的字符端点.由于本题还要求了两个单词拼在一起的条件是前一个 ...

  3. Play on Words UVA - 10129 (欧拉回路)

    题目链接:https://vjudge.net/problem/UVA-10129 题目大意:输入N  代表有n个字符串  每个字符串最长1000  要求你把所有的字符串连成一个序列  每个字符串的第 ...

  4. Uva 10129 单词

    题目链接:https://uva.onlinejudge.org/external/101/10129.pdf 把单词的首字母和最后一个字母看做节点,一个单词就是一个有向边.有向图的欧拉定理,就是除了 ...

  5. UVA 10129 Play on Words(欧拉道路)

    题意:给你n个字符串,问你是否可以出现一条链,保证链中每个字符串的第一个元素与上一个字符串的最后一个元素相同,注意可能重复出现同一个字符串 题解:以每一个字符串第一个元素指向最后一个元素形成一个有向图 ...

  6. Uva 167 The Sultan's Successors(dfs)

    题目链接:Uva 167 思路分析:八皇后问题,采用回溯法解决问题. 代码如下: #include <iostream> #include <string.h> using n ...

  7. hdu1878欧拉回路(DFS+欧拉回路)

    欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. 【UVa】1600 Patrol Robot(dfs)

    题目 题目 分析 bfs可以搞,但是我还是喜欢dfs,要记忆化不然会T 代码 #include <cstdio> #include <cstring> #include < ...

  9. uva 550 有趣的乘法(dfs)

    题目大意:给三个数A(进制).B(如*****7的最后一个数字7).C(*****7*4的后面的因数4)求符合条件下的第一个因数的位数最少 例子: 179487 * 4 = 717948 (10进制) ...

  10. 单词 (Play on Words UVA - 10129 )

    题目描述: 原题:https://vjudge.net/problem/UVA-10129 题目思路: 1.明显是判断欧拉路径 2.欧拉路径的两个条件 a.图连通 b.至多为两个奇点,且一个为起点一个 ...

最新文章

  1. android 手机监听屏幕锁屏,用户解锁
  2. 正向代理反向代理 简(fu)明(za)解释
  3. 2018视频人物识别挑战赛冠军经验分享:在现有机器资源条件下更快速验证是关键...
  4. CVPR 2017 CFNet:《End-to-end representation learning for Correlation Filter based tracking》论文笔记
  5. JavaScript~~自调用方法
  6. linux nginx编译详解,Linux下nginx编译安装教程和编译参数详解
  7. python异常(概念、捕获、传递、抛出)
  8. Python 基础测试题(含答案)
  9. 员工培训管理系统设计与实现
  10. 中企动力助天正生物争夺破伤风抗毒素全球话语权
  11. 游戏背景音乐的种类—动态音效
  12. Unity 自定义扩展Hierachy右键菜单
  13. 微信小程序-如何解决onShareAppMessage转发gif格式图片不展示?【亲测有效】
  14. 计算机教师教学能手演讲,教学能手经验交流发言稿6篇
  15. phpstudy mysql建表_MySQL_总结MySQL建表、查询优化的一些实用小技巧,MySQL建表阶段是非常重要的一 - phpStudy...
  16. uniapp修改tabbar背景图片
  17. vue开发PC端响应式项目
  18. printf和println和print区别
  19. 使用Fiddler对手机APP抓包渗透测试实战
  20. 你明白什么是会签?工作流+会签应用

热门文章

  1. 虚拟机与ubuntu(一):VirtureBox虚拟机安装和ubuntu14搭建
  2. 现代信号处理 张贤达_著名科学家、清华大学张贤达教授逝世,享年 74岁
  3. linux系统下部署程序,在linux系统下部署和更新程序的步骤.doc
  4. STM32——库函数版——数码管静态显示程序
  5. hbuilder能写php项目吗,如何在Android中使用HBuilder中的项目
  6. MASK RCNN在tensorflow 2.5中运行
  7. text无法使用空格 unity_简单的介绍几种在unity中对数据的存储和读档的方法!
  8. 信贷违约风险预测(三)简单的特征工程
  9. 机器学习- 吴恩达Andrew Ng Week8 知识总结 Clustering
  10. 机器学习- 吴恩达Andrew Ng - week3-3 Multiclass Classification