题目描述:

原题:https://vjudge.net/problem/UVA-10129

题目思路:

1.明显是判断欧拉路径

2.欧拉路径的两个条件

  a.图连通

  b.至多为两个奇点,且一个为起点一个为重点

3.连通还是用DFS判断,奇点在输入时开两个数组统计出入度

AC代码

 #include <iostream>
#include <cstring>
using namespace std; const int maxn = + ;
int G[maxn][maxn],vis[maxn]; //图的实现和访问标记
int ind[maxn],outd[maxn]; //出入度的统计
char str[]; void dfs(int u)
{
vis[u] = ;//访问标记
for(int i = ;i < maxn;i ++)
if(!vis[i] && G[u][i]) dfs(i) ;
} int main(int argc, char *argv[])
{
int t;
cin >> t;
while(t--)
{
int n;
cin >> n ; memset(G,,sizeof(str)) ;
memset(ind,,sizeof(ind));
memset(outd,,sizeof(outd)) ;
for(int i = ;i < n;i ++)
{
cin >> str ;
int len = strlen(str);
++G[str[] - 'a'][str[len-] - 'a'] ; //字母为结点,单词为边
++ind[str[len-] - 'a'] ; //出入度的统计
++outd[str[] - 'a'] ;
} bool flag = true ;
int cnt1 = ,cnt2 = ;
for(int i = ;i < maxn;i ++)
{
if(ind[i] != outd[i]){
if(ind[i] == outd[i] + ) cnt1++ ;//可能为起点的奇点
else if(ind[i] + == outd[i]) cnt2++ ;
else{
flag = false; //出入度相差大于1,不符合欧拉路径
break ;
}
}
}
if(cnt1 && cnt2 && cnt1+cnt2 > ) flag = false ;// 奇点存在且大于2,不符合欧拉路径 if(flag) //如果符合欧拉路径,dfs判断图是否连通
{
memset(vis,,sizeof(vis)) ;
//两种情况,两个奇点,则必从其中一个为起点
if(cnt1 + cnt2 == )
{
for(int i = ;i < maxn;i ++)
if(outd[i] && outd[i] - ind[i] == ) //找起点
{dfs(i); break;}
}
else
{
for(int i = ;i < maxn;i ++)
if(outd[i]) {dfs(i); break;}
} bool tag = true;
//如果此时还有未访问到的点,则图不连通,不符合欧拉路径
for(int i = ;i < maxn;i ++)
{
if(outd[i]&&!vis[i]) {
tag = false; break;
}
if(ind[i]&&!vis[i]) {
tag = false; break;
}
}
if(tag) cout << "Ordering is possible."<< endl;
else cout << "The door cannot be opened." << endl;
}
else cout << "The door cannot be opened." << endl; }
return ;
}

单词 (Play on Words UVA - 10129 )的更多相关文章

  1. Play on Words UVA - 10129 欧拉路径

    关于欧拉回路和欧拉路径 定义:欧拉回路:每条边恰好只走一次,并能回到出发点的路径欧拉路径:经过每一条边一次,但是不要求回到起始点 ①首先看欧拉回路存在性的判定: 一.无向图每个顶点的度数都是偶数,则存 ...

  2. Uva 10129 单词

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

  3. UVa 10129单词(欧拉回路)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  4. Uva 10129 - Play on Words 单词接龙 欧拉道路应用

    跟Uva 10054很像,不过这题的单词是不能反向的,所以是有向图,判断欧拉道路. 关于欧拉道路(from Titanium大神): 判断有向图是否有欧拉路 1.判断有向图的基图(即有向图转化为无向图 ...

  5. UVa 10129 单词 (欧拉通路)

    题意: 输入n(n≤100000)个单词,是否可以把所有这些单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同(例如acm.malform.mouse).每个单词最 多包含100 ...

  6. uva 10129 play on words——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABNUAAANeCAYAAAA1BjiHAAAgAElEQVR4nOydabWsuhaFywIasIAHJK

  7. UVa 10129 (并查集 + 欧拉路径) Play on Words

    题意: 有n个由小写字母的单词,要求判断是否存在某种排列使得相邻的两个单词,前一个单词末字母与后一个单词首字母相同. 分析: 将单词的两个字母看做节点,则一个单词可以看做一条有向边.那么题中所求的排列 ...

  8. UVa 10129 Play On Words【欧拉道路 并查集 】

    题意:给出n个单词,问这n个单词能否首尾接龙,即能否构成欧拉道路 按照紫书上的思路:用并查集来做,取每一个单词的第一个字母,和最后一个字母进行并查集的操作 但这道题目是欧拉道路(下面摘自http:// ...

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

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

随机推荐

  1. UITableView控件Protocell的Identifier设置 注意事项

    1.  注意:如果想使用Subtitle类型的单元格,需在Storyboard中将Protocell设置为subtitle类型,且Protocell的identifier必须与ViewControll ...

  2. 【centOS7.3 彻底卸载MySQL】

    废话不多说,直接正面刚. 1.删除MySQL yum remove mysql mysql-server mysql-libs mysql-server; 执行后继续查找相关文件 find / -na ...

  3. 获取地图的信息到input里

    在最近项目中,我接触了百度地图的API写法,对其中的代码有了一点兴趣,所以我在完成任务后,在办公室里学习了百度地图的相关引用,并申请了服务秘钥: E7PCho0sv3FdzmjC901ttP0HrS9 ...

  4. 纯js轮播图练习-1

    偶尔练习,看视频自己学着做个简单的纯JS轮播. 简单的纯js轮播图练习-1. 样子就是上面图片那样,先不管好不好看,主要是学会运用和理解轮播的原理 掌握核心的理论知识和技术的操作,其他的都可以在这个基 ...

  5. ES6 imports用法

    import defaultExport from "module-name"; import * as name from "module-name"; // ...

  6. 【C】三目运算符(先是问号之后又是冒号的那个)

    // 看这个例子就可以懂了 a = b == c ? d : e ; //如果 b==c,执行 a=d //否则执行 a=e //为了方便阅读,也可以改成下方代码 a = (b == c) ? d : ...

  7. socketpair通信

    1.线程间通信(参考安卓源码InputTransport.cpp) #include <pthread.h> #include <sys/types.h> /* See NOT ...

  8. python学习笔记:第4天 列表和元组

    目录 基本数据类型:列表 基本数据类型:元组 补充知识 基本数据类型:列表 1. 列表的介绍 列表也是python的基础的数据类型之一,类似于Java中的数组一样,可以存放很多元素.列表是用括号括起来 ...

  9. 《PHP实用问题解决案例》系列分享专栏

    <PHP实用问题解决案例>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201725.html 文章 PHP汉字拼音转换和公历农历 ...

  10. ajax重定向登录页

    /** * ajax默认设置 * 包括默认提交方式为POST, * 判断后台是否是重定向 */ $.ajaxSetup( { //设置ajax请求结束后的执行动作 complete : functio ...