POJ 2513 Colored Sticks - from lanshui_Yang
题目大意:给定一捆木棒,每根木棒的每个端点涂有某种颜色。问:是否能将这些棒子首位项链,排成一条直线,且相邻两根棍子的连接处的颜色一样。
解题思路:此题是一道典型的判断欧拉回路或欧拉通路的问题,以木棍的端点颜色为顶点。方法是:先用并查集判断图是否连通,然后统计奇度顶点的个数sumj , 如果 sumj == 0 , 则图中存在欧拉回路 ;如果 sumj == 2 , 则图中存在欧拉通路 ; 如果 sumj > 2 ,则图中不存在欧拉通路。但是此题的关键是如何给端点颜色编号,一开始,我用map映射,结果TLE,所以,我就用到了Trie 树。
Ps:此题有坑!!当没有输入时,应当输出 Possible 。。
具体请看代码:
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std ;
const int MAXN = 3e6;
int set[MAXN] ;
char s1[100] ;
char s2[100] ;
int cnt ; // 给端点编号
int d[MAXN] ; // 统计每个顶点的度
struct Tnode
{
int du ;
int xu ;
Tnode *next[26] ;
Tnode()
{
du = 0 ;
xu = 0 ;
memset(next , 0 ,sizeof(next)) ;
}
} ;
int find(int x) // 并查集
{
int r = x ;
while (r != set[r])
{
r = set[r] ;
}
return r ;
}
int inse(char * str , Tnode * root)
{
Tnode *p = root ;
while (*str)
{
int id = *str - 'a' ;
if(p -> next[id] == NULL)
{
p -> next[id] = new Tnode ;
}
++ str ;
p = p -> next[id] ;
}
if(p -> du == 0)
{
p -> xu = ++ cnt ; // 顶点颜色的编号从 1 开始
}
p -> du ++ ;
d[p -> xu] = p -> du ;
return p -> xu ;
}
int main()
{
memset(d , 0 , sizeof(d)) ;
int i ;
for(i = 1 ; i <= MAXN ; i ++)
{
set[i] = i ;
}
cnt = 0 ;
Tnode *root = new Tnode ;
while (scanf("%s%s" , s1 , s2) != EOF)
{
int x = inse(s1 , root) ;
int y = inse(s2 , root) ;
int tx = find(x) ;
int ty = find(y) ;
if(tx < ty)
{
set[ty] = tx ;
}
else
{
set[tx] = ty ;
}
}
int fz = 0 ; // 判断图的连通的分支个数
int sumj = 0 ; // 统计奇度顶点的个数
for(i = 1 ; i <= cnt ; i ++)
{
if(set[i] == i)
{
fz ++ ;
}
if(d[i] % 2 == 1)
{
sumj ++ ;
}
}
if(cnt == 0)
{
puts("Possible") ;
}
else if(fz == 1)
{
if(sumj > 2)
{
puts("Impossible") ;
}
else
{
puts("Possible") ;
}
}
else
{
puts("Impossible") ;
}
return 0 ;
}
POJ 2513 Colored Sticks - from lanshui_Yang的更多相关文章
- poj 2513 Colored Sticks(欧拉路径+并检查集合+特里)
题目链接:poj 2513 Colored Sticks 题目大意:有N个木棍,每根木棍两端被涂上颜色.如今给定每一个木棍两端的颜色.不同木棍之间拼接须要颜色同样的 端才干够.问最后是否能将N个木棍拼 ...
- [欧拉] poj 2513 Colored Sticks
主题链接: http://poj.org/problem? id=2513 Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Tota ...
- poj 2513 Colored Sticks trie树+欧拉图+并查集
点击打开链接 Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 27955 Accepted ...
- POJ 2513 Colored Sticks
Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 28036 Accepted: 7428 ...
- poj 2513 Colored Sticks (trie 树)
链接:poj 2513 题意:给定一些木棒.木棒两端都涂上颜色,不同木棒相接的一边必须是 同样的颜色.求能否将木棒首尾相接.连成一条直线. 分析:能够用欧拉路的思想来解,将木棒的每一端都看成一个结点 ...
- POJ 2513 Colored Sticks (欧拉回路 + 字典树 +并查集)
Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 27097 Accepted: 7175 ...
- poj 2513 Colored Sticks (trie树+并查集+欧拉路)
Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 40043 Accepted: 10406 ...
- POJ 2513 - Colored Sticks - [欧拉路][图的连通性][字典树]
题目链接: http://poj.org/problem?id=2513 http://bailian.openjudge.cn/practice/2513?lang=en_US Time Limit ...
- poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)
题目:http://poj.org/problem?id=2513 参考博客:http://blog.csdn.net/lyy289065406/article/details/6647445 htt ...
随机推荐
- Oracle数据库配置方式二--使用Net Manager配置数据库
在Oracle安装配置中使用Net Configuration配置了数据库,今天给大家介绍第二种配置方式,Net Manager配置. 先找到我们的Net Manager的快捷方式,如下面截图
- easyui-tree绑定数据的几种方式
没想到easyui对json数据格式要求的那么严谨,折腾了半天 第一种直接使用标签方式,很容易就加载出来了: <ul class="easyui-tree"> < ...
- memcache缓存命中深入理解转载
http://www.iteye.com/topic/225692 memcache的方法有 add,set,replace,get,delete,getstats,increment,decreme ...
- C#数组反转
static void Main(string[] arr) { string[] names = { "老杨1", "老李2", "老王3" ...
- android 手机信息获取
1. adb已安装 2. adb shell getprop 此时已列出所有相关信息
- javascript时钟
<script language="JavaScript" type="text/javascript"> function now ...
- bat判断某个目录是否存在
使用批处理判断某个目录是否存在的语句. if not exist xxx_folder_name md xxx_folder_name
- Nt内核函数原型and中文
NtLoadDriver 服务控制管理器加载设备驱动. NtUnloadDriver 服务控制管理器支持卸载指定的驱动程序. NtRegisterNewDevice 加载新驱动文件. NtQueryI ...
- 利用Cocoapods、SVN 创建私有库实现方案(yoowei)
由于项目年后要进行组件化,考虑到如果公司内部实现一些私有的组件,不对外公开,而又想在不同项目中使用,该怎么办呢? 使用Cocoapods制作私有库就完美的解决了这个问题.下图就是使用私有库带给我们的好 ...
- 转:AM335X 启动流程
链接: http://blog.csdn.net/hudaweikevin/article/details/10376585 作者:David_Hu 启动顺序(针对TI OMA3 EVM) linu ...