题目链接:传送门

思路:

(1)将每个单词视为有向路径,单词的起始字母是起始节点,末尾字母是终止节点,然后找由字母建立的有向图

是否是欧拉图或者半欧拉图。

(2)先用并查集判断是否连通,再判断入度与出度的·关系是否符合要求。

有向图的欧拉图的判断

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn = ;
int fa[],in[],out[];
string ss[maxn];
struct Edge{
int to,next,id;
}edge[maxn*];
int vis[maxn],head[maxn],tot;
int f(int x)
{
if(fa[x]==) return x;
else return fa[x]=f(fa[x]);
}
void Init()
{
memset(fa,,sizeof(fa));
memset(in,,sizeof(in));
memset(out,,sizeof(out));
memset(vis,,sizeof(vis));
memset(head,,sizeof(head));
tot=;
}
void add(int x,int y,int w)
{
edge[tot].to=y;
edge[tot].next=head[x];
edge[tot].id=w;
head[x]=tot++;
}
int main(void)
{
//printf("%d\n",'z'-'a'+1);
int N,i,n,j,x,y,t1,t2;
scanf("%d",&N);
while(N--){
scanf("%d",&n);
Init();
for(i=;i<=n;i++){
cin>>ss[i];
x=ss[i][]-'a'+;
y=ss[i][ss[i].length()-]-'a'+;
t1=f(x);t2=f(y);
if(t1!=t2) fa[t2]=t1;
in[y]++;
out[x]++;
add(x,y,i);
}
int fg=;
x=f(x);
for(i=;i<=n;i++){
y=ss[i][]-'a'+;
if(f(y)!=x){
fg=;break;
}
y==ss[i][ss[i].length()-]-'a'+;
if(f(y)!=x){
fg=;break;
}
} if(fg==){
int tt=,cc=;
for(i=;i<=;i++){
if(abs(in[i]-out[i])>){
tt=;break;
}
else if(abs(in[i]-out[i])==){
cc+=(in[i]-out[i]);
}
}
if(tt==&&cc==) printf("Ordering is possible.\n");
else printf("The door cannot be opened.\n");
}
else printf("The door cannot be opened.\n");
}
return ;
}

LOJ-10106(有向图欧拉回路的判断)的更多相关文章

  1. bzoj 1515 [POI2006]Lis-The Postman 有向图欧拉回路

    LINK:Lis-The Postman 看完题觉得 虽然容易发现是有向图欧拉回路 但是觉得很难解决这个问题. 先分析一下有向图的欧拉回路:充要条件 图中每个点的入度-出度=0且整张图是一个强连通分量 ...

  2. HDU 1878 欧拉回路(判断欧拉回路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878 题目大意:欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一 ...

  3. 有向图欧拉回路个数 BEST定理

    有向图欧拉回路个数 BZOJ 3659 但是没有这道题了  直接贴一个别人的板子吧 欧拉回路:存在一条路径经过所有的边刚好1次 有向图欧拉回路存在充要条件:①图连通:②对于所有点都满足出度=入度 BE ...

  4. 算法笔记_147:有向图欧拉回路判断应用(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 Description In order to make their sons brave, Jiajia and Wind take them t ...

  5. poj 1386 Play on Words(有向图欧拉回路)

    /* 题意:单词拼接,前一个单词的末尾字母和后一个单词的开头字母相同 思路:将一个单词的开头和末尾单词分别做两个点并建一条有向边!然后判断是否存在欧拉回路或者欧拉路 再次强调有向图欧拉路或欧拉回路的判 ...

  6. 混合欧拉回路的判断(Dinic)

    POJ1637 Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7483   Accepte ...

  7. LOJ#10106. 「一本通 3.7 例 2」单词游戏

    题目链接:https://loj.ac/problem/10106 题目描述 来自 ICPC CERC 1999/2000,有改动. 有 NNN 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词. ...

  8. Expm 9_1 有向图中环的判断问题

    [问题描述] 给定一个有向图,要求使用深度优先搜索策略,判断图中是否存在环. package org.xiu68.exp.exp9; public class Exp9_1 { //用深度优先搜索判断 ...

  9. POJ 2230 Watchcow(有向图欧拉回路)

    Bessie's been appointed the new watch-cow for the farm. Every night, it's her job to walk across the ...

随机推荐

  1. Oracle 学习笔记(二)

    一.索引 表的数据是无序的,所以叫堆表(heap table),意思为随机存储数据.因为数据是随机存储的,所以在查询的时候需要全表扫描.索引就是将无序的数据有序化,这样就可以在查询数据的时候 减少数据 ...

  2. thinkphp5 与 endroid 二维码生成

    windows compser安装endroid/qrcode,自己安装好composer工具; 1. 项目目录 文件 composer.json require 里添加 "endroid/ ...

  3. 204. jetcache:在Spring Boot中怎么玩?

      [视频&交流平台] àSpringBoot视频:http://t.cn/R3QepWG à SpringCloud视频:http://t.cn/R3QeRZc à Spring Boot源 ...

  4. 接口测试工具postman/jmeter基本使用

    一.接口的分类: 最常用的两种接口webservice接口和http api接口:1.webservice接口走soap协议通过http传输,请求报文和返回报文都是XML格式,现在测试的时候都通过工具 ...

  5. Open SuSE 安装Python3.6

    1. 下载Python3.6 tar包 去除Modules/Setup文件167行的注释 readline readline.c -lreadline -ltermcap 2. 下载readline- ...

  6. shell脚本可以解决的问题

    1.各类监控脚本,文件,内存,磁盘,端口 url 监控报警 2.监控网站目录文件是否被篡改,以及如何恢复 3.如何开发各类服务rsync nginx mysql等启动停止脚本 4.开发mysql主从复 ...

  7. background url base64

    各自含义:data: ----获取数据类型名称image/gif; -----指数据类型名称base64 -----指编码模式AAAAA ------指编码以后的结果. background-imag ...

  8. CSS: Grid homework redact.

    The web homework: Finished design: (I use six block with different color to show this homework and I ...

  9. Spring 4 官方文档学习 Web MVC 框架

    1.介绍Spring Web MVC 框架 Spring Web MVC 框架是围绕DispatcherServlet设计的,所谓DispatcherServlet就是将请求分发到handler,需要 ...

  10. asmx 接收数据过大 发生错误

    原文:https://www.cnblogs.com/xinaixia/p/5945316.html 错误:已超过传入消息(65536)的最大消息大小配额.若要增加配额,请使用相应绑定元素上的 Max ...