POJ 2513 Colored Sticks
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相关推荐
- 欧拉路径 之 poj 2513 Colored Sticks
/* 欧拉路径 之 poj 2513 Colored Sticks欧拉路径: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径.无向图存在欧拉路径 充要条件:1) 图是连通的 ...
- poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)
题目:http://poj.org/problem?id=2513 参考博客:http://blog.csdn.net/lyy289065406/article/details/6647445 htt ...
- POJ - 2513 Colored Sticks(字典树+并查集+欧拉回路)
题目链接:点击查看 题目大意:给出n个木棍,问若两两相连,最终能否构成一根长直木棍,相连的规则是两个木棍的相接端点的颜色需要保持相同 题目分析:关于这个题目,我们可以将每个木棍视为一条边,每个木棍的两 ...
- POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树
一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...
- poj 2513 Colored Sticks
// 判断图是否联通 在连通的基础上还要判断是否存在欧拉通路// 判断连通就并查集了 判断是否存在欧拉通路: 点度数为数的点 ==1 >=3就是不存在的 其它是存在的// 我开始用 map 判重 ...
- poj 2513(欧拉路径+字典树映射)
题目链接:http://poj.org/problem?id=2513 思路:题目还是很简单的,就是判断是否存在欧拉路径,我们给每个单词的头和尾映射序号,统计度数.对于给定的无向图,当且仅当图连通并且 ...
- 判断线段相交 + vector. erase迭代指针 的使用 poj 2653 Pick-up sticks
题目来源:http://poj.org/problem?id=2653 分析: 题意:按顺序给出一些木棍,输出在最上面的木棍标号. 用vector 存储木棍标号, 当前木棍与 vector 中的木棍 ...
- 【代码超详解】ZOJ 2551 / POJ 2653 Pick-up Sticks(快速排斥实验 + 跨立实验判断线段是否相交 · 模板)
一.传送门 http://poj.org/problem?id=2653 https://zoj.pintia.cn/problem-sets/91827364500/problems/9182736 ...
- POJ 2653 Pick-up sticks (线段相交)
题意:给你n条线段依次放到二维平面上,问最后有哪些没与前面的线段相交,即它是顶上的线段 题解:数据弱,正向纯模拟可过 但是有一个陷阱:如果我们从后面向前枚举,找与前面哪些相交,再删除前面那些相交的线段 ...
最新文章
- Linux支持多种平台
- C 编程异常 — double free or corruption (fasttop)
- 基于redis的悲观锁实现
- netsh winsock reset
- 终于不用手撸了,解放你的双手,教你用数学建模的方式对答题卡进行有效识别
- 法国时隔20年再折桂!“网易云信:世界杯巅峰决战之夜”活动圆满结束!
- 攻防演练中的业务逻辑漏洞及检测思路
- 在阿里云上以Daemon进程方式运行SAP Cloud Connector portable版本的尝试
- [Jinkey 原创]震惊!iOS 系统居然自带悬浮窗口调试工具
- 阿里第二代微服务强势崛起,你还敢往简历上写“精通”吗?
- Spring Cloud微服务之Hystrix服务熔断(十二)
- Proxy pattern-代理模式
- 顶部吸附_吸附脱附催化燃烧的工作原理
- ffmpeg命令:pcm和wav转换
- 网络教室是以多媒体计算机为核心,浅谈多媒体计算机网络教室发展趋势和方向...
- cf两边黑屏怎么解决win10_电脑黑屏怎么解决
- 纯干货:微软漏洞中国第一人黄正——如何用正确姿势挖掘浏览器漏洞(附完整 PPT)
- Notepad++搜索结果窗找不见了
- 新人怎么发邮件,怎么给客户发一封得体的邮箱—TOM邮箱分享
- web工程的权限管理
热门文章
- [Android] 输入系统(三):加载按键映射
- 默认构造函数和拷贝构造函数
- MongoDB优化之二:常见优化方法
- 2008技术内幕:T-SQL语言基础 联接查询摘记
- SQL Server使用convert对datetime日期数据进行转换
- SubSonic中RecordBaseT.Load(IDataReader dataReader)与LoadAndCloseReader(IDataReader dataReader)的使用区别...
- Ubuntu18.04.3虚拟机安装步骤图文教程
- MFC中关于虚函数的一些问题
- Android 在布局容器中动态添加控件
- blob 图片_前端JS实现字符串/图片/excel文件下载