Colored Sticks POJ
来源:互联网 发布:楼宇表白软件 编辑:程序博客网 时间:2024/06/08 00:04
这道题涉及的知识点比较多
前面的博客是为这道题打基础
步入正题,题意是说给出一堆木棒,每根木棒的左边和右边颜色不一样,求能否将所有的木棒按规则连成一条直线,规则是相连的木棒端点处颜色必须一致。
如果可以输出Possible
例如题目中给出的例子(后面的序号是我自己加的)
blue red 1red violet 2cyan blue 3blue magenta 4magenta cyan 5
可以按照 4 5 3 1 2的顺序连接起来。
解题思路就是利用并查集,字典树,以及欧拉回路的知识点,
如果不知道并查集可以参照本博客的并查集那篇博客,然后做畅通工程 HDU - 1232这道题练习一下,本博客上也有解题思路,然后了解一下字典树,可以参考一下http://blog.csdn.net/jiutianhe/article/details/8076835这篇文章,讲的很清楚了,欧拉回路简单了解一下,可以参考这篇博客相关内容的讲解。http://blog.csdn.net/lyy289065406/article/details/6647445。
然后贴上我的代码
#include<cstdio>#include<iostream>#include<cstring>#define N 2500005*2using namespace std;int pre[N];int indgr[N];int trie[N][26];int nodeNum, pr, cnt, oddDgr, root;int find(int x){ int r=x; while(r!=pre[r])//若r的前导点不是它本身 { r=pre[r];//查找 } //路径压缩 int i=x,j; while(i!=r) { j=pre[i]; pre[i]=r; i=j; } return r;//返回查找到的根节点}//合并void join(int x,int y){ int rx=find(x),ry=find(y); if(rx!=ry) { pre[rx]=ry; }}int main(){ char color[15]; int i; for(i=0; i<N; ++i) pre[i]=i; while(~scanf("%s",color)) { cnt++; int cur=0,L=strlen(color); for(i=0; i<L; ++i) { int k=color[i]-'a'; if(!trie[cur][k]) trie[cur][k]=++nodeNum; cur=trie[cur][k]; } ++indgr[cur]; if(cnt%2)pr=cur; else join(pr,cur); } for( i=0; i<=nodeNum; ++i) { if(indgr[i]%2)++oddDgr; if(indgr[i]&&pre[i]==i) ++root; if(oddDgr>2||root>1) break; } if(((oddDgr==0 || oddDgr==2) && root==1) || (oddDgr==0 && root==0)) printf("Possible\n"); else printf("Impossible\n"); return 0;}
阅读全文
0 0
- POJ 2513 Colored Sticks
- poj 2513 Colored Sticks
- POJ 2513 Colored Sticks
- poj 2513 colored sticks
- Poj 2513 Colored Sticks
- POJ 2513 Colored Sticks
- POJ 2513 Colored Sticks
- POJ 2513 Colored Sticks
- poj 2513 Colored Sticks
- poj 2513 Colored Sticks
- POJ 2513 Colored Sticks
- POJ 2513 Colored Sticks
- Poj 2513 Colored Sticks
- poj 2513 Colored Sticks
- POJ 2513 Colored Sticks
- POJ 2513 Colored Sticks
- poj 2513 Colored Sticks
- POJ 2513 Colored Sticks
- 想知道资源服务总线提供哪些服务?看这里就对了!
- setTimeout传递带参数的函数问题,jquery获取参数值的问题
- 关于atom的一些小问题
- java 格式化日期字符串
- Visual Studio 2015简体中文企业版/专业版下载地址和激活密钥
- Colored Sticks POJ
- scala代码风格指南--<Scaladoc>
- web.xml中注意点
- 多线程
- URL-based 下的web_concurrent_start(null),web_concurrent_end(null)
- 修改linux权限全部开放
- Android热修复和插件化(一)class文件和dex文件解析
- jQuery之插件开发入门
- C/C++函数调用的几种方式总结