【欧拉回路】Play On Words(6-16)
[UVA10129]Play On Words
算法入门经典第6章6-16(P169)
题目大意:有一些单词,问能不能将它们串成字符串(只有前缀和后缀相同才能连)
试题分析:很巧妙的一道题,将每个单词的首尾字符相连,先判断出现过的单词的连通性(并查集),再利用欧拉路有向图的判定方法判定是否构成欧拉路。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std; inline int read(){
int x=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*f;
}
const int MAXN=100001;
const int INF=999999;
int N,M;
int T;
int fa[27];
int Hash[27];
int root; int find(int x){
if(x!=fa[x]) return fa[x]=find(fa[x]);
return x;
}
void merge(int a,int b){
int x=find(a);
int y=find(b);
if(x==y) return ;
fa[y]=x;
root=x;
}
char str[1001];
int od[27],id[27]; int main(){
T=read();
while(T--){
N=read(); bool flag=false;
memset(od,0,sizeof(od));
memset(id,0,sizeof(id));
memset(Hash,false,sizeof(Hash));
for(int i=0;i<=26;i++) fa[i]=i;
for(int i=1;i<=N;i++){
scanf("%s",str);
int len=strlen(str);
merge(str[0]-'a',str[len-1]-'a');
od[str[0]-'a']++;
id[str[len-1]-'a']++;
Hash[str[len-1]-'a']=Hash[str[0]-'a']=true;
}
for(int i=0;i<26;i++){
if(Hash[i]&&find(i)!=root) {printf("The door cannot be opened.\n");flag=true;break;}
}
if(flag) continue;
int a=0,b=0;
for(int i=0;i<26;i++){
if(abs(od[i]-id[i])>1){
printf("The door cannot be opened.\n");
flag=true; break;
}
else{
if(od[i]-id[i]==1) a++;
else if(id[i]-od[i]==1) b++;
}
}
if(flag) continue;
if((!a&&!b)||(a==1&&b==1)){
printf("Ordering is possible.\n");
}
else{
printf("The door cannot be opened.\n");
}
}
}
【欧拉回路】Play On Words(6-16)的更多相关文章
- POJ2230Watchcow[欧拉回路]
Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 7512 Accepted: 3290 Specia ...
- ACM/ICPC 之 DFS求解欧拉回路+打表(POJ1392)
本题可以通过全部n位二进制数作点,而后可按照某点A的末位数与某点B的首位数相等来建立A->B有向边,以此构图,改有向图则是一个有向欧拉回路,以下我利用DFS暴力求解该欧拉回路得到的字典序最小的路 ...
- POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)
Colored Sticks DescriptionYou are given a bunch of wooden sticks. Each endpoint of each stick is col ...
- CodeForces - 325E:The Red Button (哈密尔顿 转 欧拉回路)
Piegirl found the red button. You have one last chance to change the inevitable end. The circuit und ...
- 「UOJ#117」 欧拉回路
欧拉回路 - 题目 - Universal Online Judge 题意: 给定有向图或无向图,求一条欧拉回路. 题解 心路历程:woc什么傻哔东西->哇真香我的吗!(逃 首先我知道很多人把欧 ...
- poj 1780 , poj 1392 欧拉回路求前后相互衔接的数字串
两道题目意思差不多 第一题是10进制 , 第二题是2进制的 都是利用欧拉回路的fleury算法来解决 因为我总是希望小的排在前面,所以我总是先将较小数加入栈,再利用另一个数组接收答案,但是这里再从栈中 ...
- poj 2404 中国邮递员问题 欧拉回路判定+状压dp
/* 状压dp 邮递员问题:求经过任意点出发经过每一条边一次并回到原点. 解法:1.如果是欧拉回路那么就是所有的边的总和. 2.一般的解法,找出所有的奇度顶点,任意两个顶点匹配,即最小完美匹配,可用状 ...
- A - 欧拉回路
欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路? Input测试输入包含若干测试用例.每个测试用例的第1行给出两个正整数,分别是节点数N ...
- C - Door Man(欧拉回路_格式控制)
现在你是一个豪宅的管家,因为你有个粗心的主人,所以需要你来帮忙管理,输入会告诉你现在一共有多少个房间,然后会告诉你从哪个房间出发,你的任务就是从出发的房间通过各个房间之间的通道,来把所有的门都关上,然 ...
- 在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误
1.安装mysql workbench,提示未安装软件包 libpng12-0 下载了MySQL Workbench 6.3.8 在安装的时候报错: -1ubu1604-amd64.deb 提示: ...
随机推荐
- hadoop+spark 集群的安装
1.安装连接 https://www.cnblogs.com/zengxiaoliang/p/6478859.html
- 移动端 H5 页面注意事项
1. 单个页面内容不能过多 设计常用尺寸:750 x 1334 / 640 x 1134,包含了手机顶部信号栏的高度. 移动端H5活动页面常常需要能够分享到各种社交App中,常用的有 微信.QQ 等. ...
- mysql增删
create table msg (id int, name varchar(10)); 插入语句 insert into msg values(1,'root'); insert into msg( ...
- 多线程伪共享FalseSharing
1. 伪共享产生: 在SMP架构的系统中,每个CPU核心都有自己的cache,当多个线程在不同的核心上,并且某线程修改了在同一个cache line中的数据时,由于cache一致性原则,其他核心cac ...
- c++设计模式系列----单例模式(Singleton模式
单例模式是为了解决唯一对象实例问题而提出来的,许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为.比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单 ...
- Educational Codeforces Round 23 补题小结
昨晚听说有教做人场,去补了下玩. 大概我的水平能做个5/6的样子? (不会二进制Trie啊,我真菜) A. 傻逼题.大概可以看成向量加法,判断下就好了. #include<iostream> ...
- 数据类型转换(计算mac地址)
[root@localhost test1]# vim 19.py //add #!/usr/bin/python macaddr = '00:0C:29:D1:6F:E9' prefix_mac = ...
- Redis在CentOS 7上的安装部署
简介: Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集( ...
- HDFS初识
参看原文 [Hadoop]HDFS的运行原理 参看原文 还不懂HDFS的工作原理?快来扫扫盲 简介 HDFS(Hadoop Distributed File System) Hadoop分布式文件系统 ...
- 利用CSS3伪类做3D按钮
这是通过css3伪类实现的3d按钮,html代码为: <div id="container_buttons"> <p><a class="a ...