单词 (Play on Words 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 )的更多相关文章
- Play on Words UVA - 10129 欧拉路径
关于欧拉回路和欧拉路径 定义:欧拉回路:每条边恰好只走一次,并能回到出发点的路径欧拉路径:经过每一条边一次,但是不要求回到起始点 ①首先看欧拉回路存在性的判定: 一.无向图每个顶点的度数都是偶数,则存 ...
- Uva 10129 单词
题目链接:https://uva.onlinejudge.org/external/101/10129.pdf 把单词的首字母和最后一个字母看做节点,一个单词就是一个有向边.有向图的欧拉定理,就是除了 ...
- UVa 10129单词(欧拉回路)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Uva 10129 - Play on Words 单词接龙 欧拉道路应用
跟Uva 10054很像,不过这题的单词是不能反向的,所以是有向图,判断欧拉道路. 关于欧拉道路(from Titanium大神): 判断有向图是否有欧拉路 1.判断有向图的基图(即有向图转化为无向图 ...
- UVa 10129 单词 (欧拉通路)
题意: 输入n(n≤100000)个单词,是否可以把所有这些单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同(例如acm.malform.mouse).每个单词最 多包含100 ...
- uva 10129 play on words——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABNUAAANeCAYAAAA1BjiHAAAgAElEQVR4nOydabWsuhaFywIasIAHJK
- UVa 10129 (并查集 + 欧拉路径) Play on Words
题意: 有n个由小写字母的单词,要求判断是否存在某种排列使得相邻的两个单词,前一个单词末字母与后一个单词首字母相同. 分析: 将单词的两个字母看做节点,则一个单词可以看做一条有向边.那么题中所求的排列 ...
- UVa 10129 Play On Words【欧拉道路 并查集 】
题意:给出n个单词,问这n个单词能否首尾接龙,即能否构成欧拉道路 按照紫书上的思路:用并查集来做,取每一个单词的第一个字母,和最后一个字母进行并查集的操作 但这道题目是欧拉道路(下面摘自http:// ...
- UVA - 10129 Play on Words(欧拉回路+并查集)
2.解题思路:本题利用欧拉回路存在条件解决.可以将所有的单词看做边,26个字母看做端点,那么本题其实就是问是否存在一条路径,可以到达所有出现过的字符端点.由于本题还要求了两个单词拼在一起的条件是前一个 ...
随机推荐
- C语言输入输出函数总结
常见函数: FILE *p char ch char buf[max] fopen("filename","ab")//打开名为filename的文件并返回一个 ...
- eclipse中误删tomcat后,文件都报错,恢复server时无法选择tomcat7.0解决办法
创建Tomcat v7.0 Server 不能进行下一步. 解决方法: 1.退出 eclipse 2.到[工程目录下]/.metadata/.plugins/org.eclipse.core.runt ...
- Codeforces Round #483 (Div. 2)C题
C. Finite or not? time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- 第一次使用mpvue的小记
昨晚睡前打开了半个月没打开的知乎, 看到了一个专栏文章再见jquery,我的老朋友,突然想到之前github传出,github已经彻底删除jquery,这似乎标志着前端已经完全进入了一个新的时代, ...
- es6-----部分新特性详解
ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国梦版本了).上一次标准的制订还是2009年出台 ...
- Spring Cloud之 Config Server 使用ip端口号配置高可用
先看官方文档的配置 --- spring: profiles: peer1 eureka: instance: hostname: peer1 client: serviceUrl: defaultZ ...
- QP总体结构
QP是一个基于事件驱动的嵌入式系统软件框架,其总体结构如下图. AO活动对象由事件队列和层次状态机两部分组成,每个AO占有一个优先级: QF量子框架由五个数据结构及操作组成,其数据结构采用了uCOS- ...
- MAVLink功能开发,移植教程。
MAVLink功能开发 -----------------本文由"智御电子"提供,同时提供视频移植教程,以便电子爱好者交流学习.---------------- 1.MAVLink ...
- Python学习笔记七:文件操作
文件操作 对照一个word文件的操作方式,来体会文件操作的内容 打开文件:f=open(“file”),提示编码错误,windows默认是GBK f=open(“file”,encoding=”utf ...
- HDOJ:6356-Glad You Came(线段树剪枝)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356 解题心得: 现在深深的知道了算法复杂度的重要了,这个题算复杂度的时候还要把一些常数也算出来,不然 ...