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

题解:以每一个字符串第一个元素指向最后一个元素形成一个有向图,判断这个有向图是否可以形成欧拉路就好

   注意可能有重边与自环,因此求欧拉路时判断的是是否使用完了所有的边,求起点时注意出度与入度的计算

   欧拉道路是从一个点一笔画完整张图(欧拉回路保证回到起点),注意除了起点与终点以外所有的点出度入度相等

   起点出度大入度1,终点相反(所有的点出入度相等也可以),根据这个情况求到起点

   接着使用dfs直接遍历所有的边,遍历一次记录一次就好了

#include<cstdio>
#include<cstring>
const int Max=50;
int graph[Max][Max],vis[Max][Max];
int startPoint(int n)//找欧拉路的起点,注意所有点出入度都相等的问题
{int res=0,mark=0;for(int i=0; i<n; ++i){int out=0,in=0;//入度,出度for(int j=0; j<n; ++j){out+=graph[i][j];in+=graph[j][i];}if(out-in==1)//中间每个点出入度一样,起点出度比入度大一,终点相反return i;if(out!=in&&in-out!=1)return -1;}return res;
}
int euler(int u,int n)//求欧拉有向图的道路
{int res=0;for(int v=0; v<n; ++v){if(graph[u][v]&&vis[u][v]<graph[u][v]){vis[u][v]++;res+=euler(v,n);res++;}}return res;
}
int main()
{int t;scanf("%d",&t);while(t--){memset(graph,0,sizeof(graph));memset(vis,0,sizeof(vis));int n;scanf("%d",&n);for(int i=0; i<n; ++i){char str[1010];scanf("%s",str);graph[str[0]-'a'][str[strlen(str)-1]-'a']++;}int u=startPoint(26);//printf("%d\n",u);if(u>=0&&euler(u,26)==n){printf("Ordering is possible.\n");}else{printf("The door cannot be opened.\n");}}
}

转载于:https://www.cnblogs.com/zhuanzhuruyi/p/6764450.html

UVA 10129 Play on Words(欧拉道路)相关推荐

  1. 欧拉道路 和 欧拉回路

    经典的七桥问题:是否存在一条路线,可以不重复的走遍7座桥. 转化为图就是,是否存在一条路线,可以不重复地走遍所有边. 所以在欧拉道路中,"进"和"出"是相对应的 ...

  2. 6-14 Inspector s Dilemma uva12118(欧拉道路)

    题意:给出一个国家城市个数n   所需走过道路个数e   每条道路长t   该国家任意两个城市之间都存在唯一道路长t     要求 :找一条最短的路遍历所有所需走过的路 一开始以为是图的匹配  但是好 ...

  3. UVa 10820 (打表、欧拉函数) Send a Table

    题意: 题目背景略去,将这道题很容易转化为,给出n求,n以内的有序数对(x, y)互素的对数. 分析: 问题还可以继续转化. 根据对称性,我们可以假设x<y,当x=y时,满足条件的只有(1, 1 ...

  4. UVA 10129 Play on Words

    UVA_10129 这个题目我一开始把一个字符串看成了一个点,这样就相当于去找是否存在一条不经过重复顶点的路径可以覆盖所有顶点,但这么去做的话会比较麻烦. 后来想了一下,实际上可以把一个字符串看成一条 ...

  5. UVA - 10820欧拉函数的应用

    这是一道很基础的欧拉函数的题目 题意要求  (x,y) 互质 &&x<=n&&y<=n 求互质对数 可以运用容斥,求出 phi(n)=n(1-1/n1)(1 ...

  6. UVA 11426 GCD - Extreme (II) (欧拉函数)

    题目传送门:点击打开链接 假设a.b(a<b)互质,那么gcd(a,b)=1,这样当i循环到a.j循环到b时就会向结果中+1,而i循环到2*a.j循环到2*b时就会向结果中+2(gcd(2*a, ...

  7. 小a与黄金街道(欧拉函数)/**模运算规则总结*/

    链接:https://ac.nowcoder.com/acm/contest/317/D 来源:牛客网 题目描述 小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们 ...

  8. 手把手教出欧拉!数学界最伟大的老师惨遭全网歪曲抹黑,奇葩说陈铭一句话揭露真相.........

    全世界只有3.14 % 的人关注了 青少年数学之旅 说到伟大的老师你首先想到的是谁? 万世师表的孔子?古代先哲亚里士多德?支援山区的青年教师?还是高三时每天在你耳边督促你订正错题本的班主任? 在这个光 ...

  9. 欧拉:他停止了生命和计算

    欧拉:他停止了生命和计算 一 小国里出现的巨匠 在一个小国家里诞生一位科学巨匠,这在世界史上并不多见,瑞士数学家.物理学家莱昂纳尔·欧拉便是其中最出色的一位.虽然他成年以后一直生活在两座遥远的异国城市 ...

最新文章

  1. [转载]Using ngOptions In AngularJS
  2. pandas进行数据处理常用方法与属性
  3. Cissp-【第3章 安全工程】-2021-2-22(269页-289页)
  4. Spring IOC 容器源码分析 - 填充属性到 bean 原始对象
  5. springboot很多以来jar包是在外部当时候,如何打dockerfile到阿里云
  6. 计算机科学与技术的感性认识,对计算机科学与技术学科的简单认识
  7. 2013浙大878操作系统大题答案解析
  8. 996.ICU 下被过度消费的程序员,还配享受生活吗?
  9. 中英文对照 —— 英语语法与文法概念
  10. 《Java并发编程实战》 第二章:线程安全性
  11. Android Studio配置文件修改
  12. 广电光猫超级管理员账号及光猫改桥接模式教程
  13. RamDisk Plus内存虚拟硬盘软件
  14. 借助winPE手工清除Deep Freeze冰点还原
  15. 有趣的23000词根
  16. Linux常见英文翻译
  17. 使用httpModule做权限系统
  18. 20200404零基础入门数据挖掘 - 二手车交易价格预测笔记(5)
  19. 记录和“异地恋女友”的第一次相见
  20. 增强型MOS管工作相关问题

热门文章

  1. 你社交网站上的照片,也许已经被用来训练人工智能了
  2. 陪伴程序员的一条龙、一骑士 36 岁了!
  3. 远程办公要降薪?谷歌带头:最高下降 25%
  4. 国内首档程序员真人秀?这不比博人传热血?!
  5. 你必须知道的指针基础-3.指针的移动及指针的危险
  6. 【RxSwift 实践系列 2/3】thinking in Rx- Create和Drive
  7. 【转】什么是“对用户友好”
  8. 解释器模式(interpreter)解析例子
  9. 对阿里云服务器(数据盘已分区并格式化)的数据盘进行扩容
  10. django_2.0_请求处理