poj2513Colored Sticks(无向图的欧拉回路)
/*
题意:将两端涂有颜色的木棒连在一起,并且连接处的颜色相同!
思路:将每一个单词看成一个节点,建立节点之间的无向图!判断是否是欧拉回路或者是欧拉路 并查集判通 + 奇度节点个数等于2或者0
*/
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N 2500005*2
using namespace std; int f[N];
int trie[N][];
int rank[N];
int deg[N]; int getFather(int x){
return x==f[x] ? x : f[x]=getFather(f[x]);
} void Union(int a, int b){
int fa=getFather(a), fb=getFather(b);
if(fa!=fb){
if(rank[fa]>rank[fb]){
rank[fa]+=rank[fb]+;
f[fb]=fa;
}
else{
f[fa]=fb;
rank[fb]+=rank[fa]+;
}
}
} int main(){
int cnt=, c=, cur=;
int u, v;
char ch[];
for(int i=; i<N; ++i)
f[i]=i;
while(scanf("%s", ch)!=EOF){
++c;
cur=;
for(int i=; ch[i]; ++i){
if(!trie[cur][ch[i]-'a'])
trie[cur][ch[i]-'a']=++cnt;
cur=trie[cur][ch[i]-'a'];
}
if(c&) u=cur;
else v=cur; if((c&)==){
Union(u, v);
++deg[u];
++deg[v];
}
}
int rootN=, degN=;
for(int i=; i<=cnt; ++i){
if(deg[i] && f[i]==i) ++rootN;
if(deg[i]&) ++degN;
if(rootN> || degN>) break;
}
if(rootN== && (degN== || degN==) || rootN== && degN==)
printf("Possible\n");
else printf("Impossible\n");
return ;
}
poj2513Colored Sticks(无向图的欧拉回路)的更多相关文章
- POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)
Colored Sticks DescriptionYou are given a bunch of wooden sticks. Each endpoint of each stick is col ...
- hdu 1878 无向图的欧拉回路
原题链接 hdu1878 大致题意: 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个无向图,问是否存在欧拉回路? 思路: 无向图存在欧拉回路的条件:1.图是连 ...
- SGU---101 无向图的欧拉回路
题目链接: https://cn.vjudge.net/problem/SGU-101 题目大意: 给定你n张骨牌,每张牌左右两端有一个数字,每张牌的左右两端数字可以颠倒,找出一种摆放骨牌的顺序,使得 ...
- UVA 10054 The Necklace (无向图的欧拉回路)
本文链接:http://www.cnblogs.com/Ash-ly/p/5405904.html 题意: 妹妹有一条项链,这条项链由许多珠子串在一起组成,珠子是彩色的,两个连续的珠子的交汇点颜色相同 ...
- POJ2513Colored Sticks
http://poj.org/problem?id=2513 题意 : 一些木棒,两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的. 思路 : 这个题的话就 ...
- 算法笔记_143:构造无向图的欧拉回路(Java)
目录 1 问题描述 2 解决方案 1 问题描述 具体链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...
- 算法笔记_142:无向图的欧拉回路求解(Java)
目录 1 问题描述 2 解决方案 1 问题描述 John's trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8 ...
- 算法笔记_141:无向图的欧拉回路判断问题(Java)
目录 1 问题描述 2 解决方案 1 问题描述 Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回 ...
- HDU 1878 欧拉回路(无向图的欧拉回路)
欧拉回路 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- javascript练习-扑克牌
下面用枚举类型来实现一副扑克牌的类: //定义一个玩牌的类 function Card(suit,rank){ function inherit(p){ if(p==null) throw TypeE ...
- 简单BigDecimal运算精度
项目中遇到了数值运算,如网上所写的,一般有这几个方法: /** * 提供精确的加法运算. * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ publ ...
- 读书笔记之深入理解Nginx:模块开发与结构解析
前言 我现在看书一般都是看自己能看懂的地方,看不懂就先略过,回头再看,下面就写自己看得懂的地方吧,并且把自己的理解也放到里面. 第一部分 Nginx能帮我们做什么 编译安装各个命令解释 configu ...
- SSM+DUBBO/ZK异常
1.Could not find resource(mybatis本身不支持通配符,是spring提供的ant匹配法) 2.ClassNotFoundException: org.I0Itec.zkc ...
- bzoj 3718
题意:戳这里 思路:很容易发现对于一个车能否移动到最终的位置只要判断路径中得最大高度与自身高端之和是否>w即可. 那么就可以转化为逆序对得最大数问题..即对于每一辆车,判断有那些最初在他前面,而 ...
- Eclipse无法启动错误之Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini)
悲剧,在安装Android Build Tools时,提醒需要关闭Eclipse进行安装,于是我在Tools安装完成后重启了Eclipse.但是Eclipse却无法启动,在log中有如下提示: Una ...
- entityframework使用oracle的几个小问题
问题一:Operation is not valid due to the current state of the object 生成的edmx文件有问题,解决方法参考链接 问题二:InvalidO ...
- 移动app框架inoic功能研究
原生移动app框架inoic功能研究 本篇只侧重框架提供的功能和能力的研究,请关注后续实际部署使用体验. 一.inoic是什么? inoic是一个可以使用Web技术以hybird方式开发移动app的前 ...
- 如何快速把hdfs数据动态导入到hive表
1. hdfs 文件 {"retCode":1,"retMsg":"Success","data":[{" ...
- vc编译 zlib 1.2.8
最近用到gzip关的算法,于是想起了zlib这个库,于是将其下载下来编译. 首先,在官网上下载源码包:http://zlib.net/zlib-1.2.8.tar.gz 解压之后,打开vc 命令工具: ...