1、解题思路:字典树,并查集,欧拉通路。

2、注意事项:字典树的插入;并查集与DFS的结合;欧拉回路的判断。

3、实现方法:

1 #include<iostream>
2 #include<map>
3 #include<string>
4 using namespace std;
5
6  //用邻接表表示连接关系
7 struct Edge
8 {
9 int v;
10 Edge *nxt;
11 };
12 Edge *head[1000010];
13 Edge Arr[1000010];
14
15 struct Trie
16 {
17 bool IsStr;
18 int Id;
19 Trie *nxt[26];
20 };
21 Trie root,temp[1000000];
22
23 int pos,cnt,num;
24 bool visite[500010];
25
26 //trie树的插入
27 int Insert(char str[])
28 {
29 int len=strlen(str);
30 Trie *Current=&root;
31 for(int i=0;i<len;i++)
32 {
33 if(Current->nxt[str[i]-'a']==NULL)
34 Current->nxt[str[i]-'a']=&temp[pos++];
35 Current=Current->nxt[str[i]-'a'];
36 }
37 if(Current->IsStr)
38 return Current->Id;
39 Current->IsStr=true;
40 Current->Id=++cnt;
41 return Current->Id;
42 }
43
44 void DFS(int v)
45 {
46 Edge *w=head[v]->nxt;
47 visite[v]=true;
48 while(w)
49 {
50 if(visite[w->v]==false)
51 DFS(w->v);
52 w=w->nxt;
53 }
54 }
55
56 bool Judge()
57 {
58 int x=0;
59 for(int i=1;i<=cnt;i++)
60 {
61 if(visite[i]==false)
62 {
63 DFS(i);
64 x++;
65 }
66 if(x>1)
67 return false;
68 }
69 return true;
70 }
71
72 void Init()
73 {
74 char str1[11],str2[11];
75 int A1,A2;
76 while(scanf("%s %s",str1,str2)!=EOF)
77 {
78 A1=Insert(str1);
79 A2=Insert(str2);
80 if(head[A1]==NULL)
81 head[A1]=&Arr[num++];
82 if(head[A2]==NULL)
83 head[A2]=&Arr[num++];
84 Edge *p=head[A1],*q;
85 while(p)
86 {
87 q=p;p=p->nxt;
88 }
89 q->nxt=&Arr[num++];
90 q->nxt->v=A2;
91 Edge *r=head[A2],*w;
92 while(r)
93 {
94 w=r;r=r->nxt;
95 }
96 w->nxt=&Arr[num++];
97 w->nxt->v=A1;
98 }
99 }
100
101 int main()
102 {
103 int i,s,ans=0;
104 Init();
105 if(cnt==0)
106 cout<<"Possible"<<endl;
107 else
108 {
109 if(Judge())
110 {
111 for(i=1;i<=cnt;i++)
112 {
113 Edge *p=head[i];
114 s=-1;
115 while(p)
116 {
117 s++; p=p->nxt;
118 }
119 if(s%2==1)
120 ans++;
121 }
122 if(ans==0||ans==2)
123 cout<<"Possible"<<endl;
124 else
125 cout<<"Impossible"<<endl;
126 }
127 else
128 cout<<"Impossible"<<endl;
129 }
130 return 0;
131 }

转载于:https://www.cnblogs.com/yongze103/archive/2010/07/22/1783305.html

Colored Sticks--POJ 2513相关推荐

  1. 欧拉路径 之 poj 2513 Colored Sticks

    /* 欧拉路径 之 poj 2513 Colored Sticks欧拉路径: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径.无向图存在欧拉路径 充要条件:1) 图是连通的 ...

  2. poj 2513 Colored Sticks( 字典树哈希+ 欧拉回路 + 并查集)

    题目:http://poj.org/problem?id=2513 参考博客:http://blog.csdn.net/lyy289065406/article/details/6647445 htt ...

  3. POJ - 2513 Colored Sticks(字典树+并查集+欧拉回路)

    题目链接:点击查看 题目大意:给出n个木棍,问若两两相连,最终能否构成一根长直木棍,相连的规则是两个木棍的相接端点的颜色需要保持相同 题目分析:关于这个题目,我们可以将每个木棍视为一条边,每个木棍的两 ...

  4. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  5. POJ 2513 Colored Sticks

    POJ_2513 这个题目实际上要求木棍能够组成一个欧拉道路即可.为了练字典树所以用字典树写的,当然,这个题目用哈希做也可以. 需要注意的是由于木棍有25W,因此不同的顶点最多有50W,所以存储图顶点 ...

  6. poj 2513 Colored Sticks

    // 判断图是否联通 在连通的基础上还要判断是否存在欧拉通路// 判断连通就并查集了 判断是否存在欧拉通路: 点度数为数的点 ==1 >=3就是不存在的 其它是存在的// 我开始用 map 判重 ...

  7. poj 2513(欧拉路径+字典树映射)

    题目链接:http://poj.org/problem?id=2513 思路:题目还是很简单的,就是判断是否存在欧拉路径,我们给每个单词的头和尾映射序号,统计度数.对于给定的无向图,当且仅当图连通并且 ...

  8. Pick-up sticks POJ - 2653

    题目链接:POJ - 2653 首先这题数据n<100000可能没错,但只要边添加,边判断弹出的话,还是可以直接用双for来判断. 1.边判断弹出怎么实现? 链表似乎是很不错的,从前往后遍历,不 ...

  9. Wooden Sticks POJ - 1065(最大上升子序列+动态规划状态转移思维)

    题意: 给你n个木棍的长度和重量,让其成为上升序列,如果不能达到,就需要重新一分钟设置. a)第一个木棍的准备时间为1分钟. b)在处理长度为l和重量为w的棒之后,如果l <= l'并且w &l ...

  10. POJ-2513 Colored Sticks 字典树,欧拉回路

    这题用map就超时了,所以用字典树来优化,第一次写静态的,现在都不习惯用指针了. 由于这里不要回到源点,所以不许要所有点的度都为偶数,零个或者两个均可,图也必须是连通的. 代码如下: #include ...

最新文章

  1. 2021-03-19注解是分功能模块的@ReuqestMapping注解需要依赖的jar为jar-web ,@Autowired注解依赖的是springframework包
  2. thrift简单使用
  3. Windows 10体验:文件资源管理器变成了首页
  4. 一次线上ctf的网络协议分析
  5. HttpsURLConnection 返回 400
  6. springboot mybatis 热加载mapper.xml文件(最简单)
  7. 使用QuickPart时应用自定义属性和Web Part Connection功能的演示视频
  8. 突然!锤子科技天猫官方旗舰店商品全线下架 店铺撤店?!
  9. 【Linux】Linux中变量#,@,0,1,2,*,$$,$?的解释
  10. java comparator_Java 集合排序策略接口 Comparator
  11. eplan连接定义点不显示_EPLAN电气图实例-控制回路(电机回路6)
  12. java 右对齐_字符串对齐器(左对齐、居中、右对齐)
  13. 国外免费图片素材站收集
  14. 嵌入式技术学习路线摘要
  15. 计算机学院迎接新生标语,大学迎接新生横幅标语:好巧我们见面了
  16. Mac新机初步环境配置
  17. python django安装使用 错误:Type ‘manage.py help <subcommand>‘ for help on a specific subcommand.
  18. 为何需要警惕人工智能
  19. 实现高德坐标转GPS坐标
  20. 36进制--Java

热门文章

  1. SDNU 1194.传纸条(DP) 1032.机器人
  2. 关于python安装lxml插件的问题
  3. 记录第一次使用Texlive+TexStudio写论文时遇到的问题(随时更新)
  4. Angular中ngModel的$render的详解
  5. vb.net 文本框为空提示,一键清空文本框所有内容
  6. toString() 和 强制类型转换 (String)
  7. datasnap 2011连接池,数据集对象池
  8. DataFormatString格式化字符串的总结
  9. tomcat错误:The page you tried to access (/manager/login.do) does not exist
  10. java笔记(3):String(2)