---恢复内容开始---

把它看成是一个图

只是需要欧拉路径就可以了 首尾能连成一条线即可

如果要判断这个图是否连通 得用并查集

在hrbust oj里面看答案学到的方法 不用各种for循环套着判断能否循环

只需要在union的时候做做调整 让比较大的父亲节点的父亲节点等于小的父亲节点 向1靠拢就可以

但是在这里面 是向出现过的最小的字母的排序靠拢 所以要记录

而且for循环26个字母的时候 只对出现过的字母做判断它是否与最小的字母可以连通

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<algorithm>
  4. #include<map>
  5. using namespace std;
  6. int ru[30];
  7. int chu[30];
  8. int fa[30];
  9. int vis[30];
  10. void init()
  11. {
  12. for(int i=1;i<=26;i++)
  13. {
  14. ru[i]=0;
  15. chu[i]=0;
  16. fa[i]=i;
  17. vis[i]=0;
  18. }
  19. }
  20. int find(int i)
  21. {
  22. return fa[i]==i?i:find(fa[i]);
  23. }
  24. void un(int a,int b)
  25. {
  26. int aa=find(a);
  27. int bb=find(b);
  28. if(aa>bb)
  29. fa[aa]=bb;
  30. else fa[bb]=aa;
  31. }
  32. int main(){
  33. int t;
  34. scanf("%d",&t);
  35. while(t--)
  36. {
  37. int n;
  38. scanf("%d",&n);
  39. char s[2000];
  40. init();
  41. int minn=26;
  42. for(int i=0;i<n;i++)
  43. {
  44. scanf("%s",s);
  45. int a=s[0]-'a'+1;
  46. int len=strlen(s);
  47. int b=s[len-1]-'a'+1;
  48. chu[a]++;
  49. ru[b]++;
  50. un(a,b);
  51. vis[a]++;
  52. vis[b]++;
  53. if(a<minn)
  54. minn=a;
  55. if(b<minn)
  56. minn=b;
  57. }
  58. int yi=0;
  59. int er=0;
  60. int san=0;
  61. bool ok=true;
  62. for(int i=1;i<=26;i++)
  63. {
  64. if(ru[i]==chu[i])
  65. yi++;
  66. else if(ru[i]==chu[i]+1)
  67. er++;
  68. else if(ru[i]==chu[i]-1)
  69. san++;
  70. if(vis[i]!=0)
  71. {
  72. if(find(i)!=minn)
  73. ok=false;
  74. }
  75. }
  76. if(yi==24&&er==1&&san==1&&ok==true)
  77. printf("Ordering is possible.\n");
  78. else if(yi==26&&ok==true)
  79. printf("Ordering is possible.\n");
  80. else printf("The door cannot be opened.\n");
  81. }
  82. }

  

---恢复内容结束---

hdu 1116 并查集和欧拉路径的更多相关文章

  1. hdu 1116(并查集+欧拉路径)

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  2. hdu 1116 Play on Words 欧拉路径+并查集

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  3. HDU 1116 Play on Words(欧拉路径(回路))

    http://acm.hdu.edu.cn/showproblem.php?pid=1116 题意:判断n个单词是否可以相连成一条链或一个环,两个单词可以相连的条件是 前一个单词的最后一个字母和后一个 ...

  4. hdu 1116 并查集判断欧拉回路通路

    判断一些字符串能首尾相连连在一起 并查集求欧拉回路和通路 Sample Input 3 2 acm ibm 3 acm malform mouse 2 ok ok Sample Output The ...

  5. HDU 1116 Play on Words(并查集和欧拉回路)(有向图的欧拉回路)

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  6. Play on Words HDU - 1116 (并查集 + 欧拉通路)

    Play on Words HDU - 1116 Some of the secret doors contain a very interesting word puzzle. The team o ...

  7. hdu 4514 并查集+树形dp

    湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  8. UVa 10129 Play on Words(并查集+欧拉路径)

    题目链接: https://cn.vjudge.net/problem/UVA-10129 Some of the secret doors contain a very interesting wo ...

  9. HDU 3926 并查集 图同构简单判断 STL

    给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...

随机推荐

  1. python为什么有私有方法和变量

    1. 访问安全,其实也没有决定的安全 >>> class humer(object): ... def __init__(self, name): ... self.name = n ...

  2. .net学习笔记----二级域名站点共享Session状态

    前面一篇文章提到了如何在使用了ASP.NET form authentication的二级站点之间共享登陆状态, http://www.cnblogs.com/jzywh/archive/2007/0 ...

  3. Maven使用笔记(四)pom.xml配置详解

    pom.xml文件配置详解 --声明规范 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...

  4. oracle 10g 学习之客户端安装和配置(2)

    概述 Oracle 数据库是一种网络上的数据库, 它在网络上支持多用户, 支持服务器/客户机等部署(或配置) 服务器与客户机是软件概念, 它们与计算机硬件不存在一一对应的关系. 即: 同一台计算机既可 ...

  5. Android APK反编译详解(附图)(转)

    这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件, ...

  6. MS SQL SERVER 2000 常用 Tran-SQL 语句

    一.创建数据库:create database mydb-创建数据库mydbon primary-在primary文件组中( name = mydb_data1,filename = 'd:\sql ...

  7. tcp的三次握手及四次挥手(连接与中断流程)

    连接的三次握手: 1握.client向server发送连接请求,发送的报文是:syn=1,seq number=生成的随机数x .  这时client的状态是SYN_SEND 2握.server从sy ...

  8. calendar 示例

    package unit5; import java.text.DateFormatSymbols; public class MyMonth { private int month; private ...

  9. 使用egypt+graphviz生成函数调用关系图示例

    总结: make  (-fdump-rtl-expand)  去除编译优化,比如-O3 egypt test.c.128r.expand >test.dot  可以手动打开dot文件去除一些孤立 ...

  10. WPF/Silverlight HierarchicalDataTemplate 模版的使用(转)

    上一篇 对Wpf/Silverlight Template 进行了总结,本篇继续上一篇,主要是介绍 HierarchicalDataTemplate 的使用方法.HierarchicalDataTem ...