我的思路:

用俩个数组分别记录出现过的节点的入度和出度,这样只有一个字母的入度比出度大1,一个字母的出度比入度大1,或者是所有有字母的出度和入度都一样,他就是欧拉路

但这样还差了一个联通性的判断 于是我用了一个辅助数组 f[] 用并查集的方式判断是否连通

代码:

#include<iostream>
#include<string>
using namespace std;
int f[30],c[30],r[30];
char s[1005];
int find(int x)
{  if(x==f[x])  return f[x];  f[x]=find(f[x]);  return f[x];
}
void Union(int x,int y)
{  int a=find(x);  int b=find(y);  if(a==b)  return ;  f[a]=b;  return ;
}  void init()
{for(int i=0;i<26;i++)f[i]=i;memset(c,0,sizeof(c));memset(r,0,sizeof(r));
}
int main()
{int i,j,cas,n;cin>>cas;while(cas--){init();cin>>n;for(i=0;i<n;i++){cin>>s;int a=s[0]-'a';int b=s[strlen(s)-1]-'a';Union(a,b);r[b]++;c[a]++;//累加 节点的入度和出度}int count=0;for(i=0;i<26;i++)//计算根节点数目{if(i==find(i)&&(r[i]||c[i]))count++;}if(count!=1)//判断是否连通{cout<<"The door cannot be opened."<<endl;continue;}int p1=0,p2=0;for(i=0;i<26;i++){if(c[i]>r[i])p1+=c[i]-r[i];if(r[i]>c[i])p2+=r[i]-c[i];}if((p1==0&&p2==0)||(p1==1&&p2==1))cout<<"Ordering is possible."<<endl;else cout<<"The door cannot be opened."<<endl;}return 0;
}

转载于:https://www.cnblogs.com/nanke/archive/2011/08/03/2125782.html

hdu 1116 Play on Words相关推荐

  1. hdu 1116 Play on Words(欧拉通路)

    题意:给出给出n个单词,要求判断这些单词能否接龙,规则像成语接龙一样,就是当前单词的尾字母为下一个单词的首字母. 思路:看着像是欧拉通路相关的题目,但是重点就在于怎么抽象出来. 刚开始想了半天没想明白 ...

  2. hdu 1116 欧拉回路 并查集 一组字符串能否首尾相连成一个字符串

    主要是欧拉回路的基础知识,用并查集加工处理 注意欧拉回路和并查集的细节判断 不能粘贴复制,一定要理解之后再敲一遍代码,否则浪费更多的时间 #include <stdio.h> #inclu ...

  3. hdu 1116 欧拉路

    一个有向图存在欧拉路: 在有向图中,如果图是弱连通的,并且图中除开两个顶点,其他所有顶点的入度等于出度,并且这两个点中,一个点入度比出度多1,另一个点出度比入度少1,那么该图存在欧拉路,这是个充要条件 ...

  4. 【HDU - 1116】【POJ - 1386】Play on Words(判断半欧拉图,欧拉通路)

    题干: Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has ...

  5. hdu 1116 Play on Words

    用深搜超时. 后来用欧拉回路. union set 原来是并查集 ,是种数据结构,我看英文知道有这个union set 刚开始还以为是种算法. union set code: int height[M ...

  6. hdu 1116 并查集和欧拉路径

    ---恢复内容开始--- 把它看成是一个图 只是需要欧拉路径就可以了 首尾能连成一条线即可 如果要判断这个图是否连通 得用并查集 在hrbust oj里面看答案学到的方法 不用各种for循环套着判断能 ...

  7. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  8. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  9. [转] HDU 题目分类

    转载来自:http://www.cppblog.com/acronix/archive/2010/09/24/127536.aspx 分类一: 基础题:1000.1001.1004.1005.1008 ...

最新文章

  1. android opencv 书籍,opencv android
  2. 本质矩阵svd分解_SVD推荐系统
  3. Qt文档阅读笔记-Broadcast Receiver Example解析
  4. Python高级——mini_web框架(实现web框架接口,数据库连接)
  5. 程序闪退_苹果APP日常使用时一直闪退怎么办?
  6. 更改日期为英文_修改3000个日期格式,不用熬夜到天亮,3秒就完事儿
  7. linux进程及作业管理实验,Linux 进程及作业管理(一)
  8. git 常用命令_Git基本常用命令
  9. quick-cocos2dx 组件管理器
  10. 电容或电感的电压_低成本电容电感测量电路
  11. 海马玩android模拟器哪个好用,主流安卓模拟器评测:叶子猪海马玩表现突出
  12. 记一次网站服务器搬迁实录
  13. 一个windows右键关联工具
  14. 80004005错误代码_80004005错误代码怎么回事_安装软件错误代码0×80004005如何解决...
  15. B站硬核up主稚晖君:对于有志学习嵌入式开发的软件工程师,我有这些建议!...
  16. Matplotlib颜色、线宽、线型、透明度、点型
  17. AT32F437基于LVGL的桌面显示案例
  18. google::protobuf::Closure::Run
  19. 2021年企业十大科技趋势预测
  20. PPT的三种抠图方法-演示

热门文章

  1. c#大文件读取和写入数据库
  2. Verilog中`define和parameter有什么区别
  3. CCS MAP文件说明
  4. FPGA中block ram和distributed ram的区别
  5. java提供两种处理异常的机制_浅析Java异常处理机制
  6. Windows、VMware、Linux及开发板间的网络连接
  7. 李航《统计学习方法》习题答案
  8. 获取iPhone通话记录(需越狱)
  9. 如何实现1像素的表格
  10. Android -- 贝塞尔使圆渐变为桃心