poj 2513 trie树+并查集+欧拉回路
来源:互联网 发布:国外ip代理软件 编辑:程序博客网 时间:2024/05/10 04:58
综合题,长知识,锻炼编码能力,锻炼心理承受能力...
思路:trie树记录每个单词的id,并查集判断无向图联通
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;#define NIL NULL#define maxn 500005int f[500005],d[500005],cnt,set;struct NodeType{ int id; bool flag; NodeType *Child[26]; NodeType() { id=-1; flag=false; for(int i=0;i<26;++i) Child[i]=NIL; }};NodeType *Root;void Init(){ Root=new NodeType(); int i; for(i=0;i<=maxn;++i) f[i]=i; memset(d,0,sizeof(d)); cnt=0; set=0;}void TrieInsert(char chars[]){ int i,len=strlen(chars),index; NodeType *t=Root; for(i=0;i<len;++i) { index=chars[i]-'a'; if(t->Child[index]==NIL) { t->Child[index]=new NodeType(); } t=t->Child[index]; } if(t->flag==false) { cnt++; set++; t->flag=true; t->id=cnt; }}int TrieFind(char chars[]){ int i,len=strlen(chars),index; NodeType *t=Root; for(i=0;i<len;++i) { index=chars[i]-'a'; t=t->Child[index]; } return t->id;}int Find(int id){ if(f[id]==id) return id; else return f[id]=Find(f[id]);}void Merge(int id1,int id2){ if(id1==id2) return ; else if(Find(id1)==Find(id2)) return ; else { set--; f[f[id2]]=f[id1]; }}int main(){ Init(); char input[50],A[15],B[15]; int i,j,id1,id2,even=0; while(gets(input)) { for(i=0;input[i]!=' ';++i) A[i]=input[i]; A[i++]='\0'; for(j=0;input[i]!='\0';++i,++j) B[j]=input[i]; B[j]='\0'; TrieInsert(A); TrieInsert(B); id1=TrieFind(A),id2=TrieFind(B); d[id1]++,d[id2]++; Merge(id1,id2); } if(set<=1) { for(i=1;i<=cnt;++i) if(d[i]%2!=0) even++; if(even==2||even==0) printf("Possible\n"); else printf("Impossible\n"); } else printf("Impossible\n"); return 0;}
- poj 2513 trie树+并查集+欧拉回路
- POJ-2513(trie+并查集+欧拉回路)
- POJ 2513 Colored Sticks(欧拉回路判断+字典树Trie+并查集)
- poj 2513 欧拉回路+并查集判断是否联通+Trie树
- POJ 2513 Colored Sticks (并查集 Trie树 欧拉回路)
- poj-2513-Colored Sticks-字典树trie / hash +并查集 欧拉回路
- Trie树+并查集+欧拉回路poj2513
- POJ 2513 Colored Sticks(Trie+并查集+欧拉回路)
- poj 2513 欧拉回路+并查集+字典树
- POJ 2513 欧拉通路+并查集+trie树
- POJ2513 Trie+并查集+欧拉回路
- POJ 2513 TRIE树&& 欧拉通路&&欧拉回路
- poj2513 Colored Sticks —— trie树 + 并查集 + 欧拉回路
- POJ/PKU 2513 并查集+字典树+欧拉回路
- POJ 2513 Colored Sticks 并查集 + 字典树 + 欧拉回路
- POJ 2513 Colored Sticks(字典树,并查集,欧拉回路)
- nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路
- POJ 2513 Colored Sticks(字典树+并查集连通性+欧拉回路)
- hibernate 根据配置文件生成 mysql表
- java多线程编程获取线程返回值:ExecutorCompletionService
- open-flash-chart
- web开发 jdbc
- linux work queue & work struct解析
- poj 2513 trie树+并查集+欧拉回路
- 【上海导购网】向上海导购网推送订单数据的代码
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- 恢复出厂设置流程概括
- SQLite的SQL语法
- 4412开发板UT-Exynos4412 三星A9 四核开发平台有线网络ftp 实测
- linux samba配置问题(未知的用户名或密码错误)
- LinuxMint下安装Fedora注记
- 学习JS