传送门

  1 #include <cstdio>
  2 #include <cstring>
  3 #include <algorithm>
  4 using namespace std;
  5 const int maxn = 5e5 + 10;
  6 const int maxsize = 27;
  7
  8 int par[maxn];
  9 int rnk[maxn];
 10 char s1[20], s2[20];
 11 int vis[maxn];
 12 int ch[maxn][maxsize];
 13 int val[maxn];
 14
 15 int t;
 16
 17 void init() {
 18     for (int i = 0; i < maxn; i++) {
 19         par[i] = i;
 20         rnk[i] = 0;
 21     }
 22 }
 23
 24 int find(int x) {
 25     if (par[x] == x) return x;
 26     else return par[x] = find(par[x]);
 27 }
 28
 29 void unite(int x, int y) {
 30     x = find(x);
 31     y = find(y);
 32     if (x == y) return;
 33
 34     if (rnk[x] < rnk[y]) {
 35         par[x] = y;
 36     } else {
 37         par[y] = x;
 38         if (rnk[x] == rnk[y]) rnk[x]++;
 39     }
 40 }
 41
 42 bool same(int x, int y) {
 43     return find(x) == find(y);
 44 }
 45
 46 struct Tire {
 47     int sz;
 48     Tire() {
 49         sz = 1;
 50         memset(ch[0], 0, sizeof(ch[0]));
 51     }
 52     int idx(char c) {return c - 'a';}
 53
 54     int FFF(char* s) {
 55         int len = strlen(s);
 56         int u = 0;
 57         for (int i = 0; i < len; i++) {
 58             int c = idx(s[i]);
 59             if (!ch[u][c]) {
 60                 memset(ch[sz], 0, sizeof(ch[sz]));
 61                 val[sz] = 0;
 62                 ch[u][c] = sz++;
 63             }
 64             u = ch[u][c];
 65         }
 66         if (!val[u]) val[u] = t++;
 67         return val[u];
 68     }
 69
 70 };
 71
 72
 73
 74 int main() {
 75     init();
 76     int tag = 0;
 77     Tire Tree;
 78     t = 1;
 79     while (~scanf("%s%s", s1, s2)) {
 80         int a = Tree.FFF(s1), b = Tree.FFF(s2);
 81         vis[a]++; vis[b]++;
 82         if (!same(a, b)) {
 83             unite(a, b);
 84         }
 85         tag++;
 86         //if (tag == 5) break;
 87     }
 88     int odd = 0;
 89     bool flag = 1;
 90     for (int i = 1; i < t && flag; i++) {
 91         if (vis[i] & 1) odd++;
 92         if (find(i) != find(1)) flag = 0;
 93     }
 94     if (odd != 0 && odd != 2) {
 95         flag = 0;
 96     }
 97     if (flag) {
 98         puts("Possible");
 99     } else {
100         puts("Impossible");
101     }
102     return 0;
103 }

转载于:https://www.cnblogs.com/xFANx/p/8516458.html

POJ2513Colored Sticks(欧拉路加字典树)相关推荐

  1. 【牛客 - 369C】小A与欧拉路(bfs树的直径)

    题干: 链接:https://ac.nowcoder.com/acm/contest/369/C 来源:牛客网 小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边 ...

  2. 小A与欧拉路 (树加边求最小权值欧拉路+树的直径)

    链接:https://ac.nowcoder.com/acm/contest/369/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言2621 ...

  3. POJ_2513Colored Sticks 字典树+

    比较考察技术含量的一道题. 参考链接:http://blog.csdn.net/lyy289065406/article/details/6647445 题目链接:http://poj.org/pro ...

  4. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  5. 小A与欧拉路(牛客-树的直径)

    题解: 欧拉路:从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边只通过恰好一次 问你走完这树上所有的点最短路径是什么. 因为树是没有环的,所以你走到叶子结点的时候需要往回走,也就是再走一 ...

  6. POJ-2513 Colored Sticks 字典树,欧拉回路

    这题用map就超时了,所以用字典树来优化,第一次写静态的,现在都不习惯用指针了. 由于这里不要回到源点,所以不许要所有点的度都为偶数,零个或者两个均可,图也必须是连通的. 代码如下: #include ...

  7. POJ - 2513 Colored Sticks(字典树+并查集+欧拉回路)

    题目链接:点击查看 题目大意:给出n个木棍,问若两两相连,最终能否构成一根长直木棍,相连的规则是两个木棍的相接端点的颜色需要保持相同 题目分析:关于这个题目,我们可以将每个木棍视为一条边,每个木棍的两 ...

  8. 图论--欧拉路,欧拉回路(小结)

    在题目中在慢慢细说概念 1.HDU - 3018 Ant Trip 题目大意:又N个村庄,M条道路.问须要走几次才干将全部的路遍历 解题思路:这题问的是有关欧拉路的判定 欧拉路就是每条边仅仅能走一次, ...

  9. C++ __gnu_pbds(平板电视)超详细教程(C++内置的平衡树,字典树,hash)

    整理的算法模板合集: ACM模板 目录 一.平衡树 例题:luogu P3369 [模板]普通平衡树 1. `rb_tree_tag`版 2. `splay_tree_tag`版 功能不够?自己添加! ...

最新文章

  1. CentOS7.5下yum安装MySQL8图文教程
  2. java excel api xlsx_Java 解析Excel(xls、xlsx两种格式)
  3. Effective C#(二)
  4. mongodb创建数据库用户名和密码_Linux运维老司机,教你MongoDB 的不同连接方式
  5. mysql傻瓜教程_mysql索引的使用傻瓜教程_MySQL
  6. 【论文速读】ChengLin_Liu_ICCV2017_Deep_Direct_Regression_for_Multi-Oriented_Scene_Text_Detection...
  7. php版canvas,PHP实现将HTML5中Canvas图像保存到服务器
  8. python 类self作用_self在Python中有什么用途?
  9. html小米秒杀倒计时,JavaScript_JQuery仿小米手机抢购页面倒计时效果,1、效果及功能说明 通过对时 - phpStudy...
  10. [操作系统]Nachos4.1安装教程(docker+linux)
  11. 【摄影测量】利用经度L、纬度B、大地高h及heading pitch roll飞行姿态角将IMU惯导坐标系转换到WGS84坐标系
  12. clean code 读书笔记
  13. 台式计算机设置热点,台式机怎么设置无线热点
  14. 杂文笔记(一):博弈论在网络安全中的应用
  15. 什么是DOM0,DOM2,DOM3?
  16. 何文江先生出任创意信息集团总经理
  17. eBPF系列学习(4)了解libbpf、CO-RE (Compile Once – Run Everywhe) | 使用go开发ebpf程序(云原生利器cilium ebpf )
  18. 标准字头密码体制c语言,关于Playfair密码体制
  19. 奥塔在线:Linux下按日期自动创建目录脚本
  20. 键盘输入字符串 数字转换为 * 英文字母大写转小写 小写转大写

热门文章

  1. elasticsearch实现按天翻滚索引
  2. ubuntud——系统备份和恢复
  3. 中国人民大学2016考研复试基本分数线
  4. 开源的javascript实现页面打印功能,兼容所有的浏览器(情况属实)
  5. jquery 半透明遮罩效果 小结
  6. ibatis教程之调用带参数的存储过程
  7. @字王2012·纵变体系列,共12款
  8. linux 命令行(给自己看的)
  9. 了解你所不知道的SMON功能(一):清理临时段
  10. Windows Workflow RC HOL学习笔记(六):创建一个基本的活动