POJ_2513

这个题目实际上要求木棍能够组成一个欧拉道路即可。为了练字典树所以用字典树写的,当然,这个题目用哈希做也可以。

需要注意的是由于木棍有25W,因此不同的顶点最多有50W,所以存储图顶点的数组要开到50W。

#include<stdio.h>#include<string.h>#define MAXN 500010#define MAXD 1000010#define D 500000int next[MAXD][26], flag[MAXD], r[MAXD], num[MAXN], p[MAXN], e, n;char b[15];void insert(int cur, int k){    ++ e;    flag[e] = 0;    memset(next[e], 0, sizeof(next[e]));    next[cur][k] = e;}int solve(){int i, k, cur;    cur = 0;for(i = 0; b[i]; i ++)    {        k = b[i] - 'a';if(!next[cur][k])            insert(cur, k);        cur = next[cur][k];    }if(flag[cur])        ++ num[r[cur]];else    {        flag[cur] = 1;        r[cur] = ++ n;        num[n] = 1;    }return r[cur];}int find(int x){return p[x] == x ? x : (p[x] = find(p[x]));}int check(){int i, k = 0;for(i = 1; i <= n; i ++)    {if(find(i) != find(1))return 0;if(num[i] % 2)            ++ k;    }if(k > 2)return 0;elsereturn 1;}void init(){int i, j, k, cur, x, y, tx, ty;for(i = 0; i < D; i ++)        p[i] = i;    memset(num, 0, sizeof(num));    e = n = 0;while(scanf("%s", b) == 1)    {        x = solve();        scanf("%s", b);        y = solve();        tx = find(x), ty = find(y);if(tx != ty)            p[tx] = ty;    }if(check())        printf("Possible\n");else        printf("Impossible\n");}int main(){    init();return 0;}

POJ 2513 Colored Sticks相关推荐

  1. 欧拉路径 之 poj 2513 Colored Sticks

    /* 欧拉路径 之 poj 2513 Colored Sticks欧拉路径: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径.无向图存在欧拉路径 充要条件:1) 图是连通的 ...

  2. poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)

    题目:http://poj.org/problem?id=2513 参考博客:http://blog.csdn.net/lyy289065406/article/details/6647445 htt ...

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

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

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

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

  5. poj 2513 Colored Sticks

    // 判断图是否联通 在连通的基础上还要判断是否存在欧拉通路// 判断连通就并查集了 判断是否存在欧拉通路: 点度数为数的点 ==1 >=3就是不存在的 其它是存在的// 我开始用 map 判重 ...

  6. poj 2513(欧拉路径+字典树映射)

    题目链接:http://poj.org/problem?id=2513 思路:题目还是很简单的,就是判断是否存在欧拉路径,我们给每个单词的头和尾映射序号,统计度数.对于给定的无向图,当且仅当图连通并且 ...

  7. 判断线段相交 + vector. erase迭代指针 的使用 poj 2653 Pick-up sticks

    题目来源:http://poj.org/problem?id=2653 分析: 题意:按顺序给出一些木棍,输出在最上面的木棍标号. 用vector 存储木棍标号, 当前木棍与 vector 中的木棍 ...

  8. 【代码超详解】ZOJ 2551 / POJ 2653 Pick-up Sticks(快速排斥实验 + 跨立实验判断线段是否相交 · 模板)

    一.传送门 http://poj.org/problem?id=2653 https://zoj.pintia.cn/problem-sets/91827364500/problems/9182736 ...

  9. POJ 2653 Pick-up sticks (线段相交)

    题意:给你n条线段依次放到二维平面上,问最后有哪些没与前面的线段相交,即它是顶上的线段 题解:数据弱,正向纯模拟可过 但是有一个陷阱:如果我们从后面向前枚举,找与前面哪些相交,再删除前面那些相交的线段 ...

最新文章

  1. Linux支持多种平台
  2. C 编程异常 — double free or corruption (fasttop)
  3. 基于redis的悲观锁实现
  4. netsh winsock reset
  5. 终于不用手撸了,解放你的双手,教你用数学建模的方式对答题卡进行有效识别
  6. 法国时隔20年再折桂!“网易云信:世界杯巅峰决战之夜”活动圆满结束!
  7. 攻防演练中的业务逻辑漏洞及检测思路
  8. 在阿里云上以Daemon进程方式运行SAP Cloud Connector portable版本的尝试
  9. [Jinkey 原创]震惊!iOS 系统居然自带悬浮窗口调试工具
  10. 阿里第二代微服务强势崛起,你还敢往简历上写“精通”吗?
  11. Spring Cloud微服务之Hystrix服务熔断(十二)
  12. Proxy pattern-代理模式
  13. 顶部吸附_吸附脱附催化燃烧的工作原理
  14. ffmpeg命令:pcm和wav转换
  15. 网络教室是以多媒体计算机为核心,浅谈多媒体计算机网络教室发展趋势和方向...
  16. cf两边黑屏怎么解决win10_电脑黑屏怎么解决
  17. 纯干货:微软漏洞中国第一人黄正——如何用正确姿势挖掘浏览器漏洞(附完整 PPT)
  18. Notepad++搜索结果窗找不见了
  19. 新人怎么发邮件,怎么给客户发一封得体的邮箱—TOM邮箱分享
  20. web工程的权限管理

热门文章

  1. [Android] 输入系统(三):加载按键映射
  2. 默认构造函数和拷贝构造函数
  3. MongoDB优化之二:常见优化方法
  4. 2008技术内幕:T-SQL语言基础 联接查询摘记
  5. SQL Server使用convert对datetime日期数据进行转换
  6. SubSonic中RecordBaseT.Load(IDataReader dataReader)与LoadAndCloseReader(IDataReader dataReader)的使用区别...
  7. Ubuntu18.04.3虚拟机安装步骤图文教程
  8. MFC中关于虚函数的一些问题
  9. Android 在布局容器中动态添加控件
  10. blob 图片_前端JS实现字符串/图片/excel文件下载