题目链接:https://loj.ac/problem/10106

题目描述

来自 ICPC CERC 1999/2000,有改动。

有 NNN 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词。你需要给这些盘子安排一个合适的顺序,使得相邻两个盘子中,前一个盘子上单词的末字母等于后一个盘子上单词的首字母。请你编写一个程序,判断是否能达到这一要求。如果能,请给出一个合适的顺序。

输入格式

多组数据。第一行给出数据组数 TTT,每组数据第一行给出盘子数量 NNN,接下去 NNN 行给出小写字母字符串,一种字符串可能出现多次。

输出格式

若存在一组合法解输出Ordering is possible.,否则输出The door cannot be opened.

样例

样例输入

3
2
acm
ibm
3
acm
malform
mouse
2
ok
ok

样例输出

The door cannot be opened.
Ordering is possible.
The door cannot be opened.

数据范围与提示

1≤N≤105,∣S∣≤10001 \le N \le 10^5,|S| \le 10001≤N≤10​5​​,∣S∣≤1000

题解:

一道xjb判NO的欧拉路径好题。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
int t,n,m;
char s[];
int fa[],u[],v[],cnt,cnt1,cnt2;
int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
int main()
{
scanf("%d",&t);
while (t--)
{
memset(u,,sizeof u);
memset(v,,sizeof v);
scanf("%d",&n);
cnt=cnt1=cnt2=;
for(int i=;i<=;i++) fa[i]=i;
for(int i=;i<=n;i++)
{
scanf("%s",s+),m=strlen(s+);
int l=s[]-'a'+,r=s[m]-'a'+;
fa[find(l)]=find(r),u[l]++,v[r]++;
}
for(int i=;i<=;i++)
if(((u[i]||v[i]) && (find(i)==i)) || abs(u[i]-v[i])>) cnt++;
if(cnt>)
{
printf("The door cannot be opened.\n");
continue;
}
for(int i=;i<=;i++)
if(u[i]>v[i]) cnt1++;
else if(u[i]<v[i]) cnt2++;
if(cnt1!=cnt2 || cnt1>)
{
printf("The door cannot be opened.\n");
continue;
}
printf("Ordering is possible.\n");
}
}

LOJ#10106. 「一本通 3.7 例 2」单词游戏的更多相关文章

  1. LOJ#10064. 「一本通 3.1 例 1」黑暗城堡

    LOJ#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有$N$个房间,$M$条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设$D_i$为如果 ...

  2. LOJ #10131 「一本通 4.4 例 2」暗的连锁

    LOJ #10131 「一本通 4.4 例 2」暗的连锁 给一棵 \(n\) 个点的树加上 \(m\) 条非树边 , 现在需要断开一条树边和一条非树边使得图不连通 , 求方案数 . $n \le 10 ...

  3. Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)

    题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...

  4. LOJ#10065. 「一本通 3.1 例 2」北极通讯网络

    题目链接:https://loj.ac/problem/10065 题目描述 原题来自:Waterloo University 2002 北极的某区域共有 nnn 座村庄,每座村庄的坐标用一对整数 ( ...

  5. LOJ #10132. 「一本通 4.4 例 3」异象石

    题目地址 LOJ 题解 神仙思路.思路参考自<算法竞赛进阶指南>. 考虑维护dfs序中相邻两个石头的距离,那么每次?的答案就是sum/2(首尾算相邻) 然后维护一下拿个平衡树/set维护一 ...

  6. LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci

    题目链接 题目大意 $$F[i]=F[i-1]+F[i-2]\ (\ F[1]=1\ ,\ F[2]=1\ )$$ $$T[i]=F[1]+2F[2]+3F[3]+...+nF[n]$$ 求$T[n] ...

  7. LOJ 10138 -「一本通 4.5 例 1」树的统计

    树链剖分模板题,详见这篇博客.

  8. LOJ 10155 - 「一本通 5.2 例 3」数字转换

    前言 从现在开始,这个博客要写一些题解了.起初,开这个博客只是好玩一样,没事就写写CSS.JS,然后把博客前端搞成了现在这个样子.以前博客只是偶尔记录一些东西,刷题也从来不记录,最近受一些学长的影响, ...

  9. loj #10001. 「一本通 1.1 例 2」种树

    题面 解题思路 贪心,首先按右端点排序,然后从小往大扫,因为要求树最少,所以要尽量放在右端点.然后开个bool数组判断是否种过树即可. 代码 #include<iostream> #inc ...

随机推荐

  1. java调用python

    本文记录下使用jython包来实现java代码中调用Python. 一.Maven加入 <dependency> <groupId>org.python</groupId ...

  2. ecshop移动端支付宝支付对接

    初始页,提交基本信息到api页面, <?php /* * * 功能:支付宝手机网站支付接口接口调试入口页面 * 版本:3.4 * 修改日期:2016-03-08 * 说明: * 以下代码只是为了 ...

  3. Linux学习笔记 -- 为 Shell 传递参数

    我们可以在执行 Shell 脚本时,可以向脚本传递参数.脚本内获取参数的格式为:$n.(n 代表一个数字,0为所执行的shell脚本名称,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类 ...

  4. Ehcache入门介绍一

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 特性有: 1. 快速轻量 Ehcache的线程机制是为大型高并发系统设 ...

  5. Oracle 复杂查询(1)

    一.复杂查询 1. 列出至少有一个员工的所有部门编号.名称,并统计出这些部门的平均工资.最低工资.最高工资. 1.确定所需要的数据表: emp表:可以查询出员工的数量: dept表:部门名称: emp ...

  6. 如何查看apache加载了哪些模块

    apache2/bin/apachectl -l 可以看到类似下面的结果: 这是编译时就已编译在apache中的模块,启动时自然会加载. 另外一部分,要看apach的配置文件(httpd.conf)的 ...

  7. 阿里云ECS centos7 支持IPv6

    1.编辑 /etc/sysctl.conf 文件,将其中三条禁用IPv6的设置更改为: net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default ...

  8. DDD学习笔录——提炼问题域之与领域专家一起获得领域见解

    业务和开发团队之间的协作是DDD必不可少的部分,并且它是处于开发阶段的产品获得成功的关键. 领域专家指的是那些从业务领域的政策和工作流程到棘手处和特性都具有深刻理解的人.能够为你的问题区域提供深刻见解 ...

  9. leetcode606

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  10. Python嵌套、递归、高阶函数

    一.嵌套函数 1.嵌套函数简单的理解可以看作是在函数的内部再定义函数,实现函数的“私有”. 2.特点: <1> 函数内部可以再次定义函数. <2> 只有被调用时才会执行(外部函 ...