POJ 2513-Colored Sticks (字典树)
来源:互联网 发布:网络棋盘游戏 编辑:程序博客网 时间:2024/05/17 09:19
题目链接:http://poj.org/problem?id=2513
题意:给你n个木棒,每个木棒两端各有一种颜色,两个木棒能连在一起当且仅当两个木棒有相同的一种颜色,问你这n个木棒能否连在一起。。
题解:首先需要判断能否构成欧拉回路,判断的方法很简单,判断每个木棒两端的的颜色出现多少次即可,假如有出现颜色的度为奇数次的话,只能出现两个,否则必不能构成欧拉回路,剩下的就是给每种颜色一个编号即可,字典树跑一发。
PS:这道题是去年就写过的题,只是想换种姿势搞一搞。。。。
#include<map> #include<stack> #include<queue> #include<vector> #include<math.h> #include<stdio.h> #include<iostream> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; typedef long long ll; #define inf 100000000000 #define mod 1000000007 #define maxn 530010 #define lowbit(x) (x&-x) #define eps 1e-10 int degree[maxn],size=1,fa[maxn],cnt[maxn][27],vis[maxn],color;char s1[20],s2[20];int insert(char a[]){int u=0,len=strlen(a),i;for(i=0;i<len;i++){int v=a[i]-'a';if(!cnt[u][v]){vis[size]=0;cnt[u][v]=size++;}u=cnt[u][v];}if(!vis[u])vis[u]=++color;return vis[u];}int find(int x){if(fa[x]==x)return x;return fa[x]=find(fa[x]);}int main(void){int i,ans=0;for(i=0;i<maxn;i++)fa[i]=i,degree[i]=0;while(scanf("%s%s",s1,s2)!=EOF){int t1=insert(s1);int t2=insert(s2);degree[t1]++;degree[t2]++;int f1=find(t1),f2=find(t2);if(f1!=f2)fa[f1]=f2;}for(i=1;i<=color;i++){if(degree[i]%2==1)ans++;if(ans>2 || find(1)!=find(i)){printf("Impossible\n");return 0;}}if(ans==1)printf("Impossible\n");elseprintf("Possible\n");return 0;}
阅读全文
0 0
- POJ 2513-Colored Sticks (字典树)
- poj 2513 Colored Sticks 字典树
- POJ 2513 Colored Sticks 欧拉路+字典树
- Colored Sticks poj 2513 字典树
- Poj 2513 Colored Sticks(字典树+欧拉回路)
- POJ 2513 Colored Sticks(字典树+并查集)
- poj 2513 Colored Sticks (字典树 + 并查集)
- (字典树+欧拉通路) poj 2513 Colored Sticks
- POJ 2513Colored Sticks 并查集,字典树
- poj 2513 Colored Sticks (字典树+并查集判连通)
- poj 2513 Colored Sticks (字典树+欧拉回路判定)
- POJ 2513 Colored Sticks 字典树hash 欧拉路径
- poj 2513 Colored Sticks (欧拉路+并查集+字典树)
- POJ 2513 Colored Sticks 欧拉路的判断+字典树
- POJ 2513 Colored Sticks(字典树+欧拉路径)
- poj 2513 Colored Sticks 字典树+并查集+欧拉路
- POJ 2513 Colored Sticks 字典树+并查集
- POJ 2513 Colored Sticks(字典树+欧拉回路)
- list.copy方法-深浅copy
- 程序员,我们应该如何去学习?
- [LeetCode] 530. Minimum Absolute Difference in BST
- 闲谈Tomcat性能优化
- laravel Excel import 带参数id
- POJ 2513-Colored Sticks (字典树)
- Linux之磁盘管理
- 关于Test类中不能使用Autowired注入bean的问题。。。
- unity 旋转子物体时发生变形
- LeetCode 73 Set Matrix Zeroes(Python详解及实现)
- 策略模式
- 并查集 +最小生成树
- 浅谈MapReduce编程模型
- urllib2 的三种抓取模式