题意:
应该是求一个路径让所有的单词能够首尾连起来,不需要头和尾的单词也连起来。。。应该很容易懂吧。。。我这里讲的好烂。。
思路:
从欧拉回路的定义引申过来。
1. 连通。
2. 入度和出度问题。

问题就是怎么建图???
N(1e5)条边啊。那肯定是邻接表建图。
具体处理呢?对于一个单词,肯定是考虑首尾,单词都是小写字母(lowercase characters),所以首尾的单词肯定会重复啊,但是邻接表可以确定边。但是1e5的量好大。等等,我为什么要建图啊??
只是判个连通,我用个并查集艹一下就好了?所以何必建图????
建图没有意义啊!!!
但是你怎么并,元素是什么?要满足尾对首才可以。我们干嘛去考虑位置的呢??我们只要考虑到他给我的单词的第一个个最后一个是一定连接的,所以也一定是一起的。然后后来我们去考虑这样的两个单词ad,ca,我是特意反了一下,我想说的是,遍历下来,a-d一个集合,后来find(c)=c,find(a)=d,在连通方便这样是解释的通的,但是如果是ad,ac,就有点。。。不行。。。。这样是连通么???不是啊,但用了并查集是连通了。。。所以还有个条件是判断度数,在这里应该是非常能卡掉的。
然后度的话,这里不是要考虑一个欧拉回路,这里相当于只是一个一笔画或者欧拉回路。所以只要说明中间的点的入度和出度是相等的,或者起点的入度+1=出度&&终点的入度=出度+。。。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PI;
typedef pair< PI, int> PII;
const double eps=1e-5;
const double pi=acos(-1.0);
const int mod=1e9+7;
const int INF=0x3f3f3f3f;int pre[35];
char ss[1010];int fd(int x)
{int r=x;while(r!=pre[r]){r=pre[r];}int i=x,j;while(pre[i]!=r){j=pre[i];pre[i]=r;i=j;}return r;
}void Union(int a,int b)
{int aa=fd(a);int bb=fd(b);if(aa!=bb){pre[aa]=bb;}
}int main()
{int in[35];int out[35];bool vis[35];int T,i,x,y,n;cin>>T;while(T--){scanf("%d",&n);memset(in,0,sizeof(in));memset(out,0,sizeof(out));memset(vis,0,sizeof(vis));for(i=0;i<26;i++)pre[i]=i;for(i=0;i<n;i++){scanf("%s",ss);x=ss[0]-'a';y=ss[strlen(ss)-1]-'a';Union(x,y);out[x]++;in[y]++;vis[x]=vis[y]=1;}int flag=0;int ft=0;int ed=0;int own=0;for(i=0;i<26;i++){if(vis[i]){if(pre[i]==i)own++;                  if(in[i]!=out[i]){if(in[i]==out[i]+1)ft++;else if(in[i]+1==out[i])ed++;elseflag=1;}if(own>1){flag=1;break;}}}if(flag)printf("The door cannot be opened.\n"); else if((ft==1&&ed==1)||(ft==0&&ed==0))printf("Ordering is possible.\n");elseprintf("The door cannot be opened.\n");}return 0;
}

转载于:https://www.cnblogs.com/keyboarder-zsq/p/5934443.html

hdoj1116【欧拉回路】相关推荐

  1. [模板][持续更新]欧拉回路与欧拉路径浅析

    Luogu P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与 ...

  2. uoj 117 欧拉回路

    1.判断是否为欧拉存在欧拉回路---裸的判断 欧拉回路就是看一笔能不能把途中所有的边跑完没得重复 对于无向边----建立双向边判断每个点的入度是否为2的倍数   1.1 对于有向边---建立单向边判断 ...

  3. 图论--欧拉路,欧拉回路(小结)

    在题目中在慢慢细说概念 1.HDU - 3018 Ant Trip 题目大意:又N个村庄,M条道路.问须要走几次才干将全部的路遍历 解题思路:这题问的是有关欧拉路的判定 欧拉路就是每条边仅仅能走一次, ...

  4. hdu 1878 欧拉回路

    欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. poj1386(判断一个有向图是否存在欧拉回路)

    1.欧拉回路:定义:经过图(有向图或无向图)中每条边一次且仅一次并且行遍图中每个顶点的回路( 闭合的欧拉路径,即一个环,保证每条边都通过且仅通过一次). 2.问题2:判断一个图是否有欧拉路径: (1) ...

  6. HDU1878(判断一个无向图是否存在欧拉回路)

    1.欧拉回路:定义:经过图(有向图或无向图)中每条边一次且仅一次并且行遍图中每个顶点的回路( 闭合的欧拉路径,即一个环,保证每条边都通过且仅通过一次). 2.问题1:判断一个无向图是否有欧拉回路的充要 ...

  7. luogu P1341 无序字母对(欧拉回路应用、模板)

    整理的算法模板合集: ACM模板 目录 输出n+1个字母,使得n个字母对都在这个字符串中出现,因为是n+1个字母,所以我们可以看出来其实就是一个欧拉路径,因为字母对可以替换顺序,所以我们将每个字母对都 ...

  8. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  9. 【图论专题】欧拉路径和欧拉回路

    A.AcWing 1123. 铲雪车(欧拉路的简单思想) 我们将这个图看成有向图,对于每输入一组数据加两条有向边,需要每条边都至少走一遍 我们先回想一下存在有向图的欧拉路径的充分必要条件 所有点的入度 ...

  10. 模板 - 欧拉路、欧拉回路(一笔画问题)

    整理的算法模板合集: ACM模板 目录 非递归版 普通递归版 HierholzersHierholzersHierholzers算法(输出字典序最小的答案) FleuryFleuryFleury算法 ...

最新文章

  1. python爬虫流程-什么是爬虫?爬虫的基本流程是什么?
  2. Visual Studio Code 中文下载
  3. 20165201 2017-2018-2 《Java程序设计》第3周学习总结
  4. 电感检测_三、电感线圈的识别与检测(二)
  5. 【模型加速】关于模型加速的总结
  6. Linux_CentOS 7下Nginx服务器的安装配置
  7. java通过JDBC驱动连接操作hive实例
  8. java怎么调用python_如何在Java中调用Python代码
  9. [目标检测系列]ATSS: Bridging the Gap Between Anchor-based and Anchor-free Detection via ATSS(CVPR2020)
  10. 如何向VISUAL SVN SERVER上传文件
  11. 【调用接口实现自动抠图】
  12. 手把手教你在群晖中设置阿里云DDNS
  13. MySQL高可用架构故障自动转移插件MHA
  14. html容器自定义宽高比,容器长宽比_aspect-ratio, 宽高比, 会员专栏 教程_W3cplus
  15. 阿里云ECS-Centos7.9集群部署Redis服务遭木马攻击
  16. 【读书笔记】推荐系统实践·第四章·利用用户标签数据
  17. SiT5721:±5~±8ppb超高精度Stratum 3E恒温数控振荡器DCOCXO,1-60MHz
  18. matlab将空间描述转变为约当阵,matlab求约当标准型
  19. 降龙十八掌-程序员篇
  20. 空白新机设置——让新电脑nice一些

热门文章

  1. 如何在苹果MacBook Pro上打开和使用Touch Bar Zoom?
  2. Mac 启动时屏幕上的特殊图像标识都是什么意思
  3. 运维监控三剑客之Zabbix
  4. 电商App如何让用户直接打开商品详情页
  5. Oracle 正则表达式函数-REGEXP_REPLACE 使用例子
  6. 苹果iOS手机暗藏间谍软件的揭秘者:扎徳尔斯基
  7. applet demo
  8. 用php实现遍历目录
  9. 如何为resin的jvm-default.log瘦身
  10. Java Web提交参数到Spark集群执行任务