poj 2513 无向图欧拉路+Trie
来源:互联网 发布:手机上传淘宝主图视频 编辑:程序博客网 时间:2024/06/06 04:36
题意:
给出一些木棍,每个木棍两端有两种颜色,不同的木坤如果首尾颜色相同,那么就可以连接起来,问是否所有的木棍看可以连成一条线?
分析:这题跟Uva10129单词那题几乎是一样的,只不过那题是有向图,因为单词的首尾是固定的嘛!而这题是无向图,无向图的话先判断一下是否是连通图,然后再判断一下每个点的度,如果没有奇度点或者奇度点只有两个那么是可以构成无向欧拉图的。把不同颜色当做不同的点,用Trie树给每种颜色分配一个ID值,来区分不同颜色,然后一根木棍上的两种颜色用并查集连边,最后判断整个图是否连通,如果连通在判断每个点的度。
#include<iostream>#include<cstring>#include<vector>#include<cstdio>using namespace std;const int maxnode=5e6+10;const int N=500000+10;struct Trie{ int ch[maxnode][26]; int val[maxnode]; int sz,id; void clear(){id=1;sz=1;memset(ch[0],0,sizeof(ch[0]));} int idx(char c){return c-'a';} int insert(const char *s) { int u=0,n=strlen(s); for(int i=0;i<n;i++){ int c=idx(s[i]); if(!ch[u][c]){ memset(ch[sz],0,sizeof(ch[sz])); val[sz]=0; ch[u][c]=sz++; } u=ch[u][c]; } if(val[u]==0)val[u]=id++; return val[u]; }};char a[11],b[11];int fa[N],in[N];int findfa(int x){return x==fa[x]?x:fa[x]=findfa(fa[x]);}Trie trie;int main(){ //freopen("f.txt","r",stdin); for(int i=0;i<N;i++)fa[i]=i; memset(in,0,sizeof(in)); trie.clear(); while(~scanf("%s%s",a,b)){ int ida=trie.insert(a); int idb=trie.insert(b); in[ida]++;in[idb]++; int x=findfa(ida),y=findfa(idb); if(x!=y)fa[x]=y; } int num=0; for(int i=1;i<trie.id;i++)if(findfa(i)==i)num++; if(num>1){ printf("Impossible\n");return 0; } num=0; for(int i=1;i<trie.id;i++)if(in[i]&1)num++; if(num==0||num==2)printf("Possible\n"); else printf("Impossible\n"); return 0;}
0 0
- poj 2513 无向图欧拉路+Trie
- poj 2513 Colored Sticks,无向欧拉图的判定,Trie,hash
- POJ 2513 trie树+并查集判断无向图的欧拉路
- poj 3352 无向图
- POJ 1523 无向图求割点
- POJ 1523 无向图割点
- POJ 2513--Colored Sticks【字典树编号 && 并查集判连通 && 无向图欧拉路】
- POJ 2513 (trie)
- POJ 2513 - Colored Sticks 判断无向图哈密顿通路转化为判断无向图欧拉通路
- poj 3895 【无向图最大环】
- poj 2914 无向图最小割
- POJ 1523 SPF 无向图求割点
- POJ 1144 Network 无向图求割点
- poj 1144 Network (无向图求割点)
- POJ 1041(无向图欧拉回路)
- poj 1523 SPF 无向图求割点
- POJ 2117 Electricity(无向图割点)
- POJ 2117 Electricity (无向图求割点)
- KMP再思考
- cf 102 A(暴力)
- FindBugs代码检查工具的使用
- leetcode343 Integer Break java
- C语言中值得深入知识点----数组做函数参数、数组名a与&a区别、数组名a的"数据类型"
- poj 2513 无向图欧拉路+Trie
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_4_顶点照明和Unity存放光源的第三种方式
- 错误信息:Address already in use: connect
- Android NDK : 自己动手做so库
- leetCode_Flatten Binary Tree to Linked List
- 1.APP后端开发系列:登陆系统设计中的注意问题
- Java编程中操作XML文件(解析方法一:DOM)
- verilog编程风格(说明/参数/IO/语句/缩进)
- 传递一个Parcelable正常,传递两个Null