[题解]UVA10129 Play on Words
链接:http://vjudge.net/problem/viewProblem.action?id=19492
描述:单词接龙
思路:求欧拉回路或欧拉道路。
首先建图,以字母为节点,单词为边。因为单词不可能倒序,所以是有向图。
判断图的连通性,dfs就可以做到,把它当成无向图就好了。然后判断点的出入度就可以判断是不是欧拉回路或者欧拉道路。
下面是我的实现。
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 using namespace std;
5 #define Max 30
6 #define MaxLen 1010
7 int T,n,Bgn;
8 int Edge[Max][Max],Chu[Max],Ru[Max];
9 bool vis[Max];
10 char str[MaxLen];
11 inline void Get_int(int &Ret)
12 {
13 char ch;
14 bool flag=false;
15 for(;ch=getchar(),ch<'0'||ch>'9';)
16 if(ch=='-')
17 flag=true;
18 for(Ret=ch-'0';ch=getchar(),ch>='0'&&ch<='9';Ret=Ret*10+ch-'0');
19 flag&&(Ret=-Ret);
20 }
21 inline void Read()
22 {
23 Get_int(n);
24 memset(vis,false,sizeof(vis));
25 memset(Chu,0,sizeof(Chu));
26 memset(Ru,0,sizeof(Ru));
27 memset(Edge,0,sizeof(Edge));
28 int i,u,v,Len;
29 for(i=1;i<=n;i++)
30 {
31 do
32 {
33 scanf("%s",str);
34 Len=strlen(str);
35 }while(!Len);
36 u=str[0]-'a'+1; v=str[Len-1]-'a'+1;
37 //if(u==v) continue;
38 Edge[u][v]++;Edge[v][u]++;
39 Chu[u]++;Ru[v]++;
40 vis[u]=vis[v]=true;
41 }
42 Bgn=u;
43 }
44 void Dfs(int u)
45 {
46 vis[u]=false;
47 for(int i=1;i<=26;i++)
48 if(Edge[u][i]&&vis[i])
49 Dfs(i);
50 }
51 inline bool Solve()
52 {
53 int i,ch=0,ru=0;
54 Dfs(Bgn);
55 for(i=1;i<=26;i++)
56 {
57 if(vis[i])
58 return false;
59 if(Chu[i]!=Ru[i])
60 {
61 if(Chu[i]-Ru[i]==1)
62 ch++;
63 else if(Ru[i]-Chu[i]==1)
64 ru++;
65 else
66 return false;
67 }
68 }
69 if((ch==1&&ru==1)||(ch==0&&ru==0))
70 return true;
71 return false;
72 }
73 int main()
74 {
75 Get_int(T);
76 while(T--)
77 {
78 Read();
79 if(Solve())
80 printf("Ordering is possible.\n");
81 else
82 printf("The door cannot be opened.\n");
83 }
84 return 0;
85 }
[题解]UVA10129 Play on Words的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- Linux命令(2)--cp拷贝、mv剪切、head、tail追踪、tar归档
文章目录 一.知识回顾 ls cd 二.Linux基本操作(二) 1.cp 拷贝 2.mv 移动(剪切) 3.head 头部 4.tail 追踪(尾部) 5.tar 归档 查看 压缩 解压 总结 一. ...
- Ajax_axios发送ajax请求
Ajax_axios发送ajax请求 这篇笔记主要讲一下axios基本的发送ajax请求的方法 axios在当前的前端行业里面是用的比较热门的一个 下面给大家分享一下它axios的一个基本用法 这段代 ...
- centos6.6手动安装mysql5.5并配置主从同步
0.实验环境 主机IP(Master) 192.168.61.150 centos6.6 从机IP(Slave) 192.168.61.157 centos6.6 1.查看centos系统版本 [ ...
- Discriminative Learning of Deep Convolutional Feature Point Descriptors 论文阅读笔记
介绍 该文提出一种基于深度学习的特征描述方法,并且对尺度变化.图像旋转.透射变换.非刚性变形.光照变化等具有很好的鲁棒性.该算法的整体思想并不复杂,使用孪生网络从图块中提取特征信息(得到一个128维的 ...
- vue之keep-alive的使用
keep-alive:是vue内置的一个组件,可以使被包含的组件保留状态或避免重新渲染.有两个生命周期函数:activated.deachtivated.在vue 2.1.0版本后新增了两个属性:in ...
- Linux 集群 和免秘钥登录的方法。
/* 1.1.什么是集群? 很多台服务器(计算机)做相同的事,就称之为集群 服务器和服务器之间必须要处于联通状态(linux01和linux02可以相互访问并且传输数据) 服务器的配置和常见的计算机没 ...
- TensorFlow 机器学习秘籍中文第二版·翻译完成
原文:TensorFlow Machine Learning Cookbook 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原则>,生活原则 2.3 ...
- [USACO19JAN]Train Tracking 2 P
拿到本题后,可以观察到一个性质,如果出现了 \(c_i \ne c_{i + 1}\) 那么我们一定可以确定一个位置的值,这启示着我们将 \(c_i\) 相同的部分单独拿出来考虑再将最后的答案合并.于 ...
- 微服务中的CAP原则
CAP原则:指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三个要素最多同时实现两点不可能同时实 ...
- docker的使用 (2)
使用Docker 想要玩转Docker,最简单的办法就是马上用Docker创建一些自己学习和工作中需要用到的容器,下面我们带着大家一起来创建这些容器. 运行Nginx Nginx是高性能的Web服务器 ...