hdu 1116 并查集判断欧拉回路通路
判断一些字符串能首尾相连连在一起
并查集求欧拉回路和通路
Sample Input
3
2
acm
ibm
3
acm
malform
mouse
2
ok
ok Sample Output
The door cannot be opened.
Ordering is possible.
The door cannot be opened.
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 1000000007
const int INF=0x3f3f3f3f;
const double eps=1e-;
typedef long long ll;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("*****\n");
const int MAXN=;
int n,m,tt;
char s[MAXN];
int in[],out[],vis[],f[],p[];
int find(int x)
{
if(f[x]==-)return x;
return f[x]=find(f[x]);
}
void bing(int x,int y)
{
int t1=find(x);
int t2=find(y);
if(t1!=t2)
{
f[t1]=t2;
}
}
void init()
{
cl(vis);
cl(in);
cl(out);
memset(f,-,sizeof(f));
}
int main()
{
int i,j,k;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
scanf("%d",&tt);
while(tt--)
{
init();
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%s",s);
int len=strlen(s);
int x=s[]-'a';
int y=s[len-]-'a';
out[x]++;
in[y]++;
bing(x,y);
vis[x]=vis[y]=;
}
int cnt=; //统计个数
for(i=;i<;i++)
{
if(vis[i]&&find(i)==i)
{
cnt++;
}
}
if(cnt>)
{
printf("The door cannot be opened.\n");
continue;
}
int tot=; //统计出入度不相同的点
for(i=;i<;i++)
{
if(vis[i]&&in[i]!=out[i])
{
p[tot++]=i;
}
}
if(tot==)
{
printf("Ordering is possible.\n");
continue;
}
if(tot==&&((out[p[]]-in[p[]]==&&in[p[]]-out[p[]]==)||(out[p[]]-in[p[]]==&&in[p[]]-out[p[]]==))) //欧拉通路
{
printf("Ordering is possible.\n");
continue;
}
printf("The door cannot be opened.\n");
}
}
hdu 1116 并查集判断欧拉回路通路的更多相关文章
- POJ 1308&&HDU 1272    并查集判断图
		
HDU 1272 I - 小希的迷宫 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
 - 小希的迷宫(HDU 1272 并查集判断生成树)
		
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
 - hdu 1116(并查集+欧拉路径)
		
Play on Words Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
 - HDU 3926 并查集 图同构简单判断 STL
		
给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...
 - hdu--1878--欧拉回路(并查集判断连通,欧拉回路模板题)
		
题目链接 /* 模板题-------判断欧拉回路 欧拉路径,无向图 1判断是否为连通图, 2判断奇点的个数为0 */ #include <iostream> #include <c ...
 - HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质
		
小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...
 - HDU - 5438 Ponds(拓扑排序删点+并查集判断连通分量)
		
题目: 给出一个无向图,将图中度数小于等于1的点删掉,并删掉与他相连的点,直到不能在删为止,然后判断图中的各个连通分量,如果这个连通分量里边的点的个数是奇数,就把这些点的权值求和. 思路: 先用拓扑排 ...
 - POJ 2513 Colored Sticks (离散化+并查集+欧拉通路)
		
下面两个写得很清楚了,就不在赘述. http://blog.sina.com.cn/s/blog_5cd4cccf0100apd1.htmlhttp://www.cnblogs.com/lyy2890 ...
 - hdu 4514 并查集+树形dp
		
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
 
随机推荐
- Ubuntu使用apt-get upgrade升级时出错
			
今天在按照常规的sudo apt-get update更新软件列表后,再使用sudo apt-get upgrade升级软件时,出现了以下的错误: 正在设置 linux-image-extra-4.4 ...
 - KVM,QEMU,libvirt入门学习笔记【转】
			
转自:http://blog.csdn.net/julykobe/article/details/27571387 注:本文内容均来自网络,我只是在此做了一些摘抄和整理的工作,来源均有注明. 0.虚拟 ...
 - 01-Coredump核心转存&&Linux程序地址分析【转】
			
转自:http://www.itwendao.com/article/detail/404132.html 目录(?)[-] 一Core Dump核心转存 二Linux程序地址分析 一Core Dum ...
 - mysql高可用架构 -> MHA环境准备-02
			
环境准备 环境检查(三个测试节点的环境都应该是一样的,只有ip不同) [root@db01 bin]# cat /etc/redhat-release //系统版本 CentOS Linux rele ...
 - React 学习一  运行
			
最近项目准备使用React作为前端,主要第一比较火,第二比较小.抽空先来学习一下. 首先下载资源文件:压缩后不到50KB,是挺小的哦. 其中:react.js 是 React 的核心库,react-d ...
 - 20155225 2016-2017-2 《Java程序设计》第一周学习总结
			
20155225 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 JVM(java virtual machine)就是java虚拟机,我的理解就是编译运行j ...
 - 一步一步学习IdentityServer4 (1) 概要配置说明
			
//结合EFCore生成IdentityServer4数据库 // 项目工程文件最后添加 <ItemGroup><DotNetCliToolReference Include=&qu ...
 - 如何查看K8S的网络是否完好
			
今天工作中遇到这个问题, 检查从以下几个方面入手. 一,查看各个POD的LOG,如果有错误,则要解决了再继续 二,登陆各个POD之间,互相要能PING通. 三,在物理节点上可以PING通SERVICE ...
 - Spark(一)Spark简介
			
一.官网介绍 1 什么是Spark 官网地址:http://spark.apache.org/ Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkel ...
 - javascript大神修炼记(6)——OOP思想(继承)
			
读者朋友们大家好,我们今天这一讲就接着前面的封装继续讲解,今天就是在前面内容上面的升级,OOP思想中的继承,我们就先来解释一下继承到底是什么意思,我们在什么地方会用到继续. 继承就是,后代继续祖先的一 ...