一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发。

一开始re,数组要开到550000

只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该点颜色记做++num

然后就是欧拉通路的一般做法,全部加到入度里,入度为奇数的个数为0或者2,然后用树处理过的离散后的颜色进行并查集的合并,然后看是否联通即可。

代码如下:

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<set>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#define myself i,l,r
#define lson i<<1
#define rson i<<1|1
#define Lson i<<1,l,mid
#define Rson i<<1|1,mid+1,r
#define half (l+r)/2
#define inff 0x3f3f3f3f
#define lowbit(x) x&(-x)
#define me(a,b) memset(a,b,sizeof(a))
#define min4(a,b,c,d) min(min(a,b),min(c,d))
#define min3(x,y,z) min(min(x,y),min(y,z))
#define max4(a,b,c,d) max(max(a,b),max(c,d))
#define max3(x,y,z) max(max(x,y),max(y,z))
typedef long long ll;
const double pi=acos(-1.0);
const double E=2.718281828459;
using namespace std;
const int maxn=550000;
const int N=26;
int f[maxn];
int val[maxn];
int ch[maxn][N];
int in[maxn];
int num;
int cnt,root;
int find(int x)
{return x==f[x]?x:f[x]=find(f[x]);
}
void unionn(int x,int y)
{int fx=find(x);int fy=find(y);if(fx!=fy)f[fx]=fy;
}
int newnode()
{for(int i=0;i<N;i++)ch[cnt][i]=0;val[++cnt]=0;return cnt-1;
}
void init()
{for(int i=0;i<=500000;i++)f[i]=i;cnt=0;num=0;root=newnode();memset(in,0,sizeof(in));
}
int insert(char *s)//插入返回颜色数
{int len=strlen(s);int u=0;for(int i=0;i<len;i++){int v=s[i]-'a';if(!ch[u][v])ch[u][v]=newnode();u=ch[u][v];}if(!val[u])val[u]=++num;return val[u];
}
char a[11],b[11];
int main()
{init();while(scanf("%s%s",a,b)!=EOF){int x=insert(a);int y=insert(b);unionn(x,y);in[x]++,in[y]++;}int con=0;int a=0;for(int i=1;i<=num;i++){if(find(i)==i)con++;if(in[i]%2==1)a++;}if(a==1||a>=3||con>1)//奇数点的个数和并查集根的个数判断 ,oula判断条件printf("Impossible\n");elseprintf("Possible\n");return 0;
}

POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树相关推荐

  1. 欧拉路径 之 poj 2513 Colored Sticks

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

  2. poj 2513 Colored Sticks

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

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

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

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

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

  5. POJ 2513 Colored Sticks

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

  6. 【POJ - 2337】Catenyms(欧拉图相关,欧拉通路输出路径,tricks)

    题干: A catenym is a pair of words separated by a period such that the last letter of the first word i ...

  7. #1176 : 欧拉路·一(欧拉通路的判定)

    #1176 : 欧拉路·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho最近在玩一个解密类的游戏,他们需要控制角色在一片原始丛林里面探险,收集道具,并找 ...

  8. ZOJ - 4122 Triangle City(最短路+欧拉通路+思维)

    题目链接:点击查看 题目大意:给出一张三角形的无向图,如下图所示 求出从点 ( 1 , 1 ) 到点 ( n , n ) 找到一条最长路,且每条边至多遍历一次,输出最长路的权值以及路径 题目分析:点 ...

  9. 图论 —— 图的遍历 —— 欧拉通路与欧拉回路问题

    [基本概念] 欧拉通路:通过图中所有边一次且仅一次行遍所有顶点的通路 欧拉回路:通过图中所有边一次且仅一次行遍所有顶点的回路 欧拉图:具有欧拉回路的图 半欧拉图:具有欧拉通路而无欧拉回路的图 奇度点: ...

最新文章

  1. 只用CPU开发自动驾驶轮船,他们居然做到了
  2. Java中Collection集合接口
  3. ajax从php里能输出俩值,Ajax返回值作为PHP变量
  4. UILabel 根据text的内容来调整大小
  5. tt公路车Java配置怎么样_普通公路车换TT车把可以吗,别的东西还有需要换的吗?...
  6. 微控制器8位到32位变迁
  7. Spring-aop-Advisor接口与Pointcut接口
  8. iOS工程开发笔记二
  9. 1458: 移动距离(暴力模拟)
  10. 网摘Android调用WebService
  11. 南京师范大学计算机考研2021,南京师范大学2021考研分数线已公布
  12. vim设置(非常全面),即.vimrc文件的配置
  13. 企业微信授权登录实例代码(仅仅获取过程)
  14. 专用播放器到底是些什么东西?
  15. Spark的conf目录下没有slaves文件,spark3.1.2解压以后conf目录下没有slaves,spark找不到slaves怎么办,解决slaves问题
  16. AS3 抽象类与接口
  17. php大写转为小写,PHP 实现人民币小写转换成大写的方法及大小写转换函数
  18. 生而强悍的iQOO如何在安卓手机阵营成功跑出?
  19. 2014年中国支付行业的十大事件:突袭、强攻、暗战与围剿
  20. SpringCloud系列(3)---Netfilx-Ribbon

热门文章

  1. python 实现延迟的操作
  2. python %f 怎样指定小数点的位数
  3. CoordinatorLayout 和 AppBarLayout 实现折叠效果 底部带阴影的处理方法
  4. js 添加内容实现列表功能
  5. Asp.net MVC中的ViewData与ViewBag
  6. Java知多少(29)覆盖和重载
  7. 如何 搭建 RMAN 备份平台
  8. Jquery php 点击td变成input,修改后失去焦点发送数据
  9. AlexNet中的局部响应归一化(LRN)
  10. 软件测试系统测试的定义,如何定义软件测试人员的测试范围