---恢复内容开始---

把它看成是一个图

只是需要欧拉路径就可以了 首尾能连成一条线即可

如果要判断这个图是否连通 得用并查集

在hrbust oj里面看答案学到的方法 不用各种for循环套着判断能否循环

只需要在union的时候做做调整 让比较大的父亲节点的父亲节点等于小的父亲节点 向1靠拢就可以

但是在这里面 是向出现过的最小的字母的排序靠拢 所以要记录

而且for循环26个字母的时候 只对出现过的字母做判断它是否与最小的字母可以连通

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
using namespace std;
int ru[30];
int chu[30];
int fa[30];
int vis[30];
void init()
{
for(int i=1;i<=26;i++)
{
ru[i]=0;
chu[i]=0;
fa[i]=i;
vis[i]=0;
}
}
int find(int i)
{
return fa[i]==i?i:find(fa[i]);
}
void un(int a,int b)
{
int aa=find(a);
int bb=find(b);
if(aa>bb)
fa[aa]=bb;
else fa[bb]=aa;
}
int main(){
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
char s[2000];
init();
int minn=26;
for(int i=0;i<n;i++)
{
scanf("%s",s);
int a=s[0]-'a'+1;
int len=strlen(s);
int b=s[len-1]-'a'+1;
chu[a]++;
ru[b]++;
un(a,b);
vis[a]++;
vis[b]++;
if(a<minn)
minn=a;
if(b<minn)
minn=b;
}
int yi=0;
int er=0;
int san=0;
bool ok=true;
for(int i=1;i<=26;i++)
{
if(ru[i]==chu[i])
yi++;
else if(ru[i]==chu[i]+1)
er++;
else if(ru[i]==chu[i]-1)
san++;
if(vis[i]!=0)
{
if(find(i)!=minn)
ok=false;
}
}
if(yi==24&&er==1&&san==1&&ok==true)
printf("Ordering is possible.\n");
else if(yi==26&&ok==true)
printf("Ordering is possible.\n");
else printf("The door cannot be opened.\n");
}
}

  

---恢复内容结束---

hdu 1116 并查集和欧拉路径的更多相关文章

  1. hdu 1116(并查集+欧拉路径)

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  2. hdu 1116 Play on Words 欧拉路径+并查集

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  3. HDU 1116 Play on Words(欧拉路径(回路))

    http://acm.hdu.edu.cn/showproblem.php?pid=1116 题意:判断n个单词是否可以相连成一条链或一个环,两个单词可以相连的条件是 前一个单词的最后一个字母和后一个 ...

  4. hdu 1116 并查集判断欧拉回路通路

    判断一些字符串能首尾相连连在一起 并查集求欧拉回路和通路 Sample Input 3 2 acm ibm 3 acm malform mouse 2 ok ok Sample Output The ...

  5. HDU 1116 Play on Words(并查集和欧拉回路)(有向图的欧拉回路)

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  6. Play on Words HDU - 1116 (并查集 + 欧拉通路)

    Play on Words HDU - 1116 Some of the secret doors contain a very interesting word puzzle. The team o ...

  7. hdu 4514 并查集+树形dp

    湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

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

    题目链接: https://cn.vjudge.net/problem/UVA-10129 Some of the secret doors contain a very interesting wo ...

  9. HDU 3926 并查集 图同构简单判断 STL

    给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...

随机推荐

  1. eoe项目结构

    ├ cn.eoe.app –存放程序全局性类的包├ cn.eoe.app.adapter –存放适配器的实现类的包 ├ cn.eoe.app.adapter.base –存放适配器基类的包├ cn.e ...

  2. php 正则表达式

    <?php //正则表达式 //定界符:斜杠:/正则/ //匹配开始:^ //匹配结束:$ /*\d代表一个数字 \w代表一个单词 */ $zz = "/(13[0-9]|14[5|7 ...

  3. kmv xml 文件配置vnc 端口冲突 会无法启动

    <graphics type=' autoport='no' listen='0.0.0.0'> 如果有多个虛机用相同vnc port的话,只能有一个可以启动,所以vnc port号是唯一 ...

  4. Linux电源管理(11)_Runtime PM之功能描述

    转自:http://www.wowotech.net/pm_subsystem/rpm_overview.html 1. 前言 终于可以写Runtime PM(后面简称RPM)了,说实话,蜗蜗有点小激 ...

  5. PhpStorm 配置Xdebug

    IDE => Xdebug => Apache(XAMPP) => Firefox + easist Xdebug 1>XAMPP停止apache服务;2>在安装目录下找 ...

  6. Eclipse快捷键及各种设置(转载)

    1.提示键配置一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项 ...

  7. UML从需求到实现----包图

    上接:UML中图出现顺序 上回讲到用例图,UML中各个图之间的关系.接着根据UML建模中图出现的顺序来总结包图. 用例图确定以后.用户的需求基本上就确定了.接下来要根据用户的要求去设计系统.建模的顺序 ...

  8. 实现Activity刷新(转)

    目前刷新Acitivity,只想到几种方法.仅供参考,如果您有更好的方法,请赐教. 程序界面: 点击refresh view可以刷新界面,点击write content可以在EditText中自动写入 ...

  9. isnull的使用方法

    is null 查看列数据为空 select*from lrb where lrid is null   ISNULL使用指定的替换值替换 NULL. 语法ISNULL ( check_express ...

  10. 浅谈C/C++中的顺序点和副作用

    一.副作用(side effect) 表达式有两种功能:每个表达式都产生一个值( value ),同时可能包含副作用( side effect ).副作用是指改变了某些变量的值. 如: 1:20    ...