题意:

应该是求一个路径让所有的单词能够首尾连起来,不需要头和尾的单词也连起来。。。应该很容易懂吧。。。我这里讲的好烂。。

思路:

从欧拉回路的定义引申过来。

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++;
else
flag=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");
else
printf("The door cannot be opened.\n");
}
return 0;
}

hdoj1116【欧拉回路】的更多相关文章

  1. ACM/ICPC 之 混合图的欧拉回路判定-网络流(POJ1637)

    //网络流判定混合图欧拉回路 //通过网络流使得各点的出入度相同则possible,否则impossible //残留网络的权值为可改变方向的次数,即n个双向边则有n次 //Time:157Ms Me ...

  2. [poj2337]求字典序最小欧拉回路

    注意:找出一条欧拉回路,与判定这个图能不能一笔联通...是不同的概念 c++奇怪的编译规则...生不如死啊... string怎么用啊...cincout来救? 可以直接.length()我也是长见识 ...

  3. ACM: FZU 2112 Tickets - 欧拉回路 - 并查集

     FZU 2112 Tickets Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u P ...

  4. UVA 10054 the necklace 欧拉回路

    有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...

  5. POJ 1637 混合图的欧拉回路判定

    题意:一张混合图,判断是否存在欧拉回路. 分析参考: 混合图(既有有向边又有无向边的图)中欧拉环.欧拉路径的判定需要借助网络流! (1)欧拉环的判定:一开始当然是判断原图的基图是否连通,若不连通则一定 ...

  6. codeforces 723E (欧拉回路)

    Problem One-Way Reform 题目大意 给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案. 解题分析 最多点的数量就是入度为偶数的点. 将入 ...

  7. UVa 12118 检查员的难题(dfs+欧拉回路)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. UVA 10054 (欧拉回路) The Necklace

    题目:这里 题意:有一种由彩色珠子连接而成的项链,每个珠子两半由不同颜色(由1到50的数字表示颜色)组成,相邻的两个珠子在接触的地方颜色相同,现在有一些零碎的珠子,确认它是否能 复原成完整的项链. 把 ...

  9. poj2513Colored Sticks(无向图的欧拉回路)

    /* 题意:将两端涂有颜色的木棒连在一起,并且连接处的颜色相同! 思路:将每一个单词看成一个节点,建立节点之间的无向图!判断是否是欧拉回路或者是欧拉路 并查集判通 + 奇度节点个数等于2或者0 */ ...

随机推荐

  1. Mac 下配置 Cocos2d-x 3-x android 的环境

    本人初学Cocos2d 3-x,环境配置,搭建android环境弄了好长时间,走了不少弯路,翻阅了好多人的博客和文档,包括官方文档讲的似乎有些似懂非懂,好多依然是旧的版本,所以把我的整个过程梳理一下. ...

  2. 阿里云 ubuntu 14.04 模板上安装 docker

    ubuntu 14.04 的内核是 3.13 ,所以内核不用升级. 安装过程例如以下: # apt-get update # apt-get install apt-transport-https # ...

  3. 斯坦福《机器学习》Lesson6感想———1、函数间隔和几何间隔

    这一课主要是从怎样推断一个机器学习分类算法里拟合的參数是最佳參数引出函数间隔和几何间隔的定义. 1.函数间隔 如果假想函数 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...

  4. Android自己定义组件系列【11】——实现3D立体旋转效果

    今天在网上看到一篇文章写关于Android实现3D旋转(ca=drs-">http://www.ibm.com/developerworks/cn/opensource/os-cn-a ...

  5. TinyXML的使用

    TinyXML TinyXML是一个简单的小型C ++ XML解析器,可以轻松集成到其他程序中. 它能做什么: 简而言之,TinyXML解析XML文档,并从可以读取,修改和保存的文档对象模型(DOM) ...

  6. java的多态以及重载,重写,前期绑定,后期绑定

    多态的定义: 一个类实例的相同方法在不同情形有不同表现形式.多态机制使具有不同内部结构的对象可以共享相同的外部接口.这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通 ...

  7. 【读后感】Netty 系列之 Netty 高性能之道 - 相比 Mina 怎样 ?

    [读后感]Netty 系列之 Netty 高性能之道 - 相比 Mina 怎样 ? 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商 ...

  8. MVC Controller构造器注入

    UnityDependencyResolver 的标准写法 public class UnityDependencyResolver : IDependencyResolver {     priva ...

  9. React通用后台管理系统

    react-admin 部分采用了antd,相关功能较全,添加了较多的组件模块.star 664 GitHub:https://github.com/yezihaohao/react-admin 在线 ...

  10. table 中的thead tbody

    通过thead 下的tr 设置样式以及 tbody 下的 tr 设置样式 避免冲突 <table> <thead> <tr> <td> </td& ...