hdu1116
http://acm.hdu.edu.cn/showproblem.php?pid=1116
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
const int N=;
int father[N],vis[N];
int find(int x)//查找根
{
if(father[x]!=x)
father[x]=find(father[x]);
return father[x];
}
void make(int a,int b)//合并操作
{
int f1=find(a);
int f2=find(b);
if(f1!=f2)
father[f1]=f2;
} int main()
{
//freopen("in.txt","r",stdin);
int t;
cin>>t;
while(t--)
{
int out[N],in[N],p[N];
memset(in,,sizeof(in));
memset(out,,sizeof(out));
memset(vis,,sizeof(vis));
int n;
for(int i=;i<;i++)
father[i]=i;//数组赋初值
cin >> n;
while(n--)
{
char str[];
cin>>str;
int a=str[]-'a';
int b=str[strlen(str)-]-'a';
out[a]++;
in[b]++;
make(a,b);//合并操作
vis[a]=vis[b]=;
}
for(int i=;i<;i++)
father[i]=find(i);//寻找每个点的根节点
int cnt=;
for(int i=;i<;i++)
{
if(vis[i] && father[i]==i)//确定有几颗树
cnt++;
}
if(cnt>)
{
printf("The door cannot be opened.\n");
continue;
}
int j=;
for(int i=;i<;i++)
{
if(vis[i] && out[i]!=in[i])//找起点和终点
p[j++]=i;
}
if(j==)//环
{
printf("Ordering is possible.\n");
continue;
}
if(j== && ((out[p[]]-in[p[]]== && in[p[]]-out[p[]]== ) ||
(in[p[]]-out[p[]]== && out[p[]]-in[p[]]== ) ) )
{//起点和终点的判断
printf("Ordering is possible.\n");
continue;
}
printf("The door cannot be opened.\n");
}
return ;
}
hdu1116的更多相关文章
- HDU1116 Play on Words(有向图欧拉通路)
我把单词当作点,然后这样其实是不对的,这样就要判定是否是哈密顿通路.. 这题应该把单词的首尾单词当作点,而单词本身就是边,那样就是判定欧拉通路了. 有向图包含欧拉通路的充要条件是:首先基图连通,然后是 ...
- Play on Words[HDU1116]
Play on Words Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- hdu1116 欧拉回路
//Accepted 248 KB 125 ms //欧拉回路 //以26个字母为定点,一个单词为从首字母到末尾字母的一条边 //下面就是有向图判断欧拉回路 //连通+节点入度和==出度和 或者 存在 ...
- HDU1116图论
http://acm.split.hdu.edu.cn/showproblem.php?pid=1116 #include<stdio.h> #include<algorithm&g ...
- hdu1116回溯N皇后问题
题目连接 经过思考,不难发现:恰好N个皇后放在不同行不同列,那么是不是可以转换成N个皇后所在行分别确定(一人一行)的情况下对她们的所在列的枚举. 也就是列的全排列生成问题,我们用c[x]表示x行皇后的 ...
- hdu1116有向图判断欧拉通路判断
Play on Words Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- hdu-1116(欧拉回路+并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1116 思路:将字符串的头元素和尾元素视为图的x,y节点,然后合并x,y. 如果这个图不连通,则门不能打 ...
- HDU1116(欧拉路径+并查集)
题意: 给出一些字符串,有这两个字符串,如果第一个字符串的最后一个字母和第二个字符串的第一个字母是一样的,则这两个字符串是可以连接在一起的. 问给出的这些字符串能否串成一个环或者一整个链. 思路: 将 ...
- hdu1116 Play on Words--并查集
原题链接: pid=1116">http://acm.hdu.edu.cn/showproblem.php? pid=1116 一:原题内容 Problem Description S ...
随机推荐
- 14.Apache配置
环境: ↗ atl.example.com (192.168.1.101) ↗ www.e ...
- Flex-box 学习
.flex-cont{ /*定义为flexbox的“父元素”*/ display: -webkit-box; display: -webkit-flex; display: flex; /*子元素沿主 ...
- 使用MongoDB的开源项目
根据谷歌的搜索结果筛选出来的. 统计应用 counlty https://count.ly/ mongopress 开源CMS系统 http://www.mongopress.org/ Rubedo ...
- C# 编写Window服务基础(一)
一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT.Windows 2000和Windows XP等操作系统下用户环境以外的程序.在以前,编写Wind ...
- JavaScript移除数组元素减少长度的方法
JavaScript移除数组元素减少长度的方法,代码如下: //数组移除长度方法 var array=[]; array[0]="张三"; array[1]="李四& ...
- Win7开始菜单之【附件】不全解决方案
Win7开始菜单之[附件]不全解决方案 1:打开你的[开始]菜单,转到附件,如果你发现你的附件里的“附件”不是那么全的话,如下图:来吧,我告诉你如何恢复它到最初的模样……哦,或许如果你不急于恢复的话, ...
- 正则PerlRegEx实现的批量替换指定文件中的标签
示例: 一个朋友需要而编写的标签升级更新. 速度超快,1w个文件大概4,5秒,本想加个多线程显示进度,后来想想算了 主要代码: reg.RegEx := '<' + Edit_regular1. ...
- Jquery 在动态元素上绑定事件
弄了很久却没有弄出来,感觉没有错,但是动态元素上的事件根本就不响应,代码如下: <input type="button" id="btnyes" valu ...
- Python线性时间排序——桶排序、基数排序与计数排序
1. 桶排序 1.1 范围为1-M的桶排序 如果有一个数组A,包含N个整数,值从1到M,我们可以得到一种非常快速的排序,桶排序(bucket sort).留置一个数组S,里面含有M个桶,初始化为0.然 ...
- 开发流程习惯的养成—TFS简单使用
才开始用,所以是个很基础的介绍,欢迎大家一起交流学习 一.追本溯源 讲到开发流程,还要从敏捷开始,因为敏捷才有了开发流程的重视,整个流程也是按照敏捷的思想进行的,这里不再叙述敏捷的定义 敏捷的流程(个 ...