UVa10129,Play On Words】的更多相关文章

题目链接:https://vjudge.net/problem/UVA-10129 代码如下: // UVa10129 Play on Words // Rujia Liu // 题意:输入n个单词,是否可以排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同 // 算法:把字母看作结点,单词看成有向边,则有解当且仅当图中有欧拉路径.注意要先判连通 #include<cstdio> #include<cstring> #include<vector> u…
给出n个单词,如果一个单词的尾和另一个单词的头字符相等,那么可以相连,问这n个单词是否可以排成一列.欧拉路应用,构图:一个单词的头尾字母分别作为顶点,每输入一个word,该word的头指向word的尾画一个有向边,并且记录每个顶点的出入度.利用dfs先判断是否为一个连通图,如果是的话则判断是否有且仅有一个起点和终点(abs(出度-入度)=1),或是一个环 #include <iostream> #include <cstdio> #include <string> #i…
传送门:   UVA - 10129 题目大意: 给定一些单词(可能会重复出现),判断单词是否能排成一个序列,前提是单词的最后一个字母与下一个单词的第一个字母相同.输出"The door cannot be opened."(不可能)或者"Ordering is possible."(可能). 单词数小于 10,000,且单个测试的有多组数据. 解题思路: 将单词看作链接首尾字母的边,建图,寻找 一条欧拉路径.(E.P.),需要判断底图(即无向图 或 由有向图看作的…
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=105&page=show_problem&problem=1070 题目类型: 欧拉道路 题目: Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has to solve…
这是一道欧拉回路题 欧拉回路:就是一个路径包括每条边恰好一次. 判断是否满足欧拉回路.首先是图是联通的.其次图中每个点的入度等于出度.如果是欧拉路径的话,满足奇点只能等于2或0,并且对于有向图,奇点的入度和出度差值为1和-1. #include <iostream> #include <cstring> #include <string> #include <map> #include <set> #include <algorithm&g…
了解了欧拉回路和欧拉道路的性质 : 欧拉道路  最多只有两个奇点(不可能只有一个奇点)     并且当有两个奇点的时候  一个奇点入比出多一   一个奇点出比入多一 采用并查集查看是否连同   如果连通块大于等于2  显然不成立 然后判断 入数组 和出数组的个数  当处于个数不相同的时候说明有奇点   判断此时一个为入奇点 一个为出奇点!! 十分巧妙 根据查找连通性不同  有两种方式: 并查集 #include<bits/stdc++.h> using namespace std; ]; ];…
题目大意:给出一系列单词,当某个单词的首字母和前一个单词的尾字母相同,则这两个单词能链接起来.给出一系列单词,问是否能够连起来. 题目分析:以单词的首尾字母为点,单词为边建立有向图,便是判断图中是否存在欧拉道路.有向图中存在欧拉路径的两个条件是:1.忽略边的方向性后,底图联通:2.奇点个数为0时.奇点个数为2并且满足起点的入度比出度小1和终点的出度比入度大1时,欧拉道路一定存在: 判断图的连通性有两种方法:1.利用并查集,只判断有几个根节点即可:2.使用DFS,做法实质上就是判断联通块的个数:…
欧拉路和欧拉圈,简言之就是,从无向图的一个结点出发,走一条路/圈,每条边恰好经过一次,即一笔画问题 欧拉定理:一个无向图最多只有两个奇结点,那么我们就从一个奇结点出发,到另一个结点为之,一定有一条欧拉路. 无向图:最多只能有两个奇节点的图则可判定为有欧拉路 有向图:最多只能有两个结点的入度和出度不相同,必须其中一个结点的入度比出度大1(终点),另一个结点的出度比入度大1(起点),且其无向图(即底图)是连通的. 应用: 判定欧拉路/圈的有无:根据底图的连通性+结点的度数判定,其中连通性的判定可使用…
判断无向图是否存在欧拉回路,就是看度数为奇数的点有多少个,如果有两个,那么以那分别两个点为起点和终点,可以构造出一条欧拉回路,如果没有,就任意来,否则,欧拉回路不存在. 首先用并查集判断连通,然后统计度数. #include<cstdio> #include<cstring> #include<vector> //#include<algorithm> //#define local using namespace std; ; ; int p[maxl];…
1.题目描写叙述:点击打开链接 2.解题思路:本题利用欧拉回路存在条件解决. 能够将全部的单词看做边,26个字母看做端点,那么本题事实上就是问是否存在一条路径,能够到达全部出现过的字符端点. 因为本题还要求了两个单词拼在一起的条件是前一个单词的右端点和本单词的左端点一样.所以这是一个有向图.依据结论:有向图的底图(忽略边的方向后的图)必须连通:有向图中最多仅仅能有两个端点的入度不等于出度.且必须是当中一点的入度比出度小1,还有一点的入度比出度大1.因此先推断端点是否都连通,再推断每一个端点的度数…
Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has to solve it to open that doors. Because there is no other way to open the doors, the puzzle is very important for us. 一些密门会包含有趣的文字谜,考古学家小队为了开门不得不解决它.别无他法,…
题目 输入n(n≤100000)个单词,是否可以把所有这些单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同(例如 acm,malform,mouse).每个单词最多包含1000个小写字母.输入中可以有重复单词. 解题思路 把字母看作结点,单词看作有向边,则问题有解等价于图中存在欧拉道路.有向图中存在欧拉道路的条件有两个:一是底图(忽略边的方向后得到的无向图)连通,二是度数满足不存在奇点或奇点数为2.度数判读只要在输入时记录每个顶点的入度出度,而连通性判断有两种:DFS和并…
考古学家有时候遇到一些神秘的门,这些门需要解开特定的谜题才能打开.因为没有其他方法可以打开门,这谜题对我们来说非常重要.在门上有许多磁盘,每个盘子上有一个英文单字在上面.这些盘子必须被安排,使得盘子上的每个单字的第一个字母必须与前一个盘子的单字的最后一个字母相同.例如:acm后面可以接motorola.你的任务是写一个程序,读入所有的单字然后判断是否可以做出如上述的安排,如此来能打开门.Input输入的第一列有一个整数代表以下有几组测试数据.每组测试数据的第一列,有一个整数N(1 <= N <…
链接:http://vjudge.net/problem/viewProblem.action?id=19492 描述:单词接龙 思路:求欧拉回路或欧拉道路. 首先建图,以字母为节点,单词为边.因为单词不可能倒序,所以是有向图. 判断图的连通性,dfs就可以做到,把它当成无向图就好了.然后判断点的出入度就可以判断是不是欧拉回路或者欧拉道路. 下面是我的实现. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstri…
题目链接: https://cn.vjudge.net/problem/UVA-10129 Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has to solve it to open that doors. Because there is no other way to open the doors, the puzzle is very importan…
题目描述: 原题:https://vjudge.net/problem/UVA-10129 题目思路: 1.明显是判断欧拉路径 2.欧拉路径的两个条件 a.图连通 b.至多为两个奇点,且一个为起点一个为重点 3.连通还是用DFS判断,奇点在输入时开两个数组统计出入度 AC代码 #include <iostream> #include <cstring> using namespace std; + ; int G[maxn][maxn],vis[maxn]; //图的实现和访问标记…
[UVA10129]Play On Words 算法入门经典第6章6-16(P169) 题目大意:有一些单词,问能不能将它们串成字符串(只有前缀和后缀相同才能连) 试题分析:很巧妙的一道题,将每个单词的首尾字符相连,先判断出现过的单词的连通性(并查集),再利用欧拉路有向图的判定方法判定是否构成欧拉路. #include<iostream> #include<cstring> #include<cstdio> #include<vector> #include…
关于欧拉回路和欧拉路径 定义:欧拉回路:每条边恰好只走一次,并能回到出发点的路径欧拉路径:经过每一条边一次,但是不要求回到起始点 ①首先看欧拉回路存在性的判定: 一.无向图每个顶点的度数都是偶数,则存在欧拉回路. 二.有向图(所有边都是单向的)每个节顶点的入度都等于出度,则存在欧拉回路. ②.欧拉路径存在性的判定 一.无向图一个无向图存在欧拉路径,当且仅当   该图所有顶点的度数为偶数   或者  除了两个度数为奇数外其余的全是偶数. 二.有向图一个有向图存在欧拉路径,当且仅当  该图所有顶点的…
题目链接:https://vjudge.net/problem/UVA-10129 题目大意:输入N  代表有n个字符串  每个字符串最长1000  要求你把所有的字符串连成一个序列  每个字符串的第一个字母是前一个字符串的最后一个字母 思路:这是学的欧拉回路的第一道题 ,把单词的首字母和尾字母看做结点,单词看作边 ,判断能否找出一条欧拉回路就行了 首先要知道什么是欧拉回路: 第一个条件:图必须是连通的 第二个条件:最多只有两个奇点(出度和入度不相等的点) 满足上面两个条件的就是欧拉回路 如果有…
P1127 词链 题目描述 如果单词X的末字母与单词Y的首字母相同,则X与Y可以相连成X.Y.(注意:X.Y之间是英文的句号“.”).例如,单词dog与单词gopher,则dog与gopher可以相连成dog.gopher. 另外还有一些例子: dog.gopher gopher.rat rat.tiger aloha.aloha arachnid.dog 连接成的词可以与其他单词相连,组成更长的词链,例如: aloha.arachnid.dog.gopher.rat.tiger 注意到,“.”…