题意:给出很多很多很多很多个棒子 左右各有颜色(给出的是单词) 相同颜色的可以接在一起,问是否存在一种

方法可以使得所以棒子连在一起

思路:就是一个判欧拉通路的题目,欧拉通路存在:没奇度顶点   或者只有2个奇度顶点 同时要连通   。关键在于给颜色hash和

判断连通性   hash用字典树  连通用并查集

 #include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=+;
struct Trie{
int ch[maxn][];
int size;
int num[maxn];
int number;
void init(){
memset(ch,,sizeof(ch));
size=;
number=;
memset(num,,sizeof(num));
}
void insert(char*s){
int rc=,i=;
for(;s[i]!='\0';i++){
int id=s[i]-'a';
if(ch[rc][id]==){
ch[rc][id]=size++;
}
rc=ch[rc][id];
}
if(num[rc]==)num[rc]=number++;
}
int find(char*s){
int rc=,i=;
for(;s[i]!='\0';i++){
int id=s[i]-'a';
if(ch[rc][id]==){
return -;
}
// if(s[i+1]=='\0')return ch[rc][id];
rc=ch[rc][id];
}
return num[rc];
}
}trie;
int father[maxn];
int Find(int x){
return father[x]=father[x]==x?x:Find(father[x]);
}
void merge(int x,int y){
x=Find(x);
y=Find(y);
if(x!=y)
father[x]=y;
}
char s1[],s2[];
int dgree[maxn];
int main(){
trie.init();
int flag=;
for(int i=;i<=maxn;i++)father[i]=i;
int maxnum=;
while(scanf("%s%s",s1,s2)==){
trie.insert(s1);trie.insert(s2);
int x=trie.find(s1);
int y=trie.find(s2);
dgree[x]++;
dgree[y]++;
maxnum=max(maxnum,x);
maxnum=max(maxnum,y);
merge(x,y);
}
int z=;
for(int i=;i<=maxnum;i++){
if(dgree[i]%)z++;
}
flag=Find();
int ok=;
for(int i=;i<=maxnum;i++){
if(flag!=Find(i)){
// cout<<i<<" "<<Find(i)<<" "<<flag<<endl;
ok=;break;
}
}
// cout<<ok<<" "<<z<<endl;
if((ok)&&(z==||z==))printf("Possible\n");
else printf("Impossible"); return ;
}

Colored Sticks POJ - 2513 并查集+欧拉通路+字典树hash的更多相关文章

  1. POJ 2513 无向欧拉通路+字典树+并查集

    题目大意: 有一堆头尾均有颜色的木条,要让它们拼接在一起,拼接处颜色要保证相同,问是否能够实现 这道题我一开始利用map<string,int>来对颜色进行赋值,好进行后面的并查操作以及欧 ...

  2. NYOJ--42--dfs水过||并查集+欧拉通路--一笔画问题

    dfs水过: /* Name: NYOJ--42--一笔画问题 Author: shen_渊 Date: 18/04/17 15:22 Description: 这个题用并查集做,更好.在练搜索,试试 ...

  3. POJ 2513 Colored Sticks (离散化+并查集+欧拉通路)

    下面两个写得很清楚了,就不在赘述. http://blog.sina.com.cn/s/blog_5cd4cccf0100apd1.htmlhttp://www.cnblogs.com/lyy2890 ...

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

    题目链接 Description You are given a bunch of wooden sticks. Each endpoint of each stick is colored with ...

  5. Colored Sticks - poj2513(trie + 并查集)

    问题便转化为:给定一个图,是否存在“一笔画”经过涂中每一点,以及经过每一边一次.这样就是求图中是否存在欧拉路Euler-Path.由图论知识可以知道,无向图存在欧拉路的充要条件为:① 图是连通的:② ...

  6. Colored Sticks POJ - 2513(trie树欧拉路)

    题意: 就是无向图欧拉路 解析: 不能用map..超时 在判断是否只有一个联通的时候,我比较喜欢用set,但也不能用set,会超时,反正不能用stl emm 用trie树来编号就好了 #include ...

  7. poj 2513 欧拉回路+并查集推断是否联通+Trie树

    http://poj.org/problem? id=2513 最初看到 第一感觉---map  一看250000的数据量 果断放弃 然后记得曾经看过.trie取代map.尤其当数据量特别大的时候 学 ...

  8. POJ2513Colored Sticks(欧拉通路)(字典树)(并查集)

                                                             Colored Sticks Time Limit: 5000MS   Memory ...

  9. poj 2513 连接火柴 字典树+欧拉通路 好题

    Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 27134   Accepted: 7186 ...

随机推荐

  1. JAVA里自定义注解来进行数据验证

    API开发中经常会遇到一些对请求数据进行验证的情况,这时候如果使用注解就有两个好处,一是验证逻辑和业务逻辑分离,代码清晰,二是验证逻辑可以轻松复用,只需要在要验证的地方加上注解就可以. Java提供了 ...

  2. Python之Flask笔记

    在这里先说一下最开始所经历的一些错误app=Flask(_name_),当初拼写的时候怎么都报错后来发现此处是两个'_' 配置文件 app.config.from_object(__name__) 在 ...

  3. docker配置阿里云镜像加速

    一.登录阿里云控制台,并打开镜像加速器页面,复制加速器地址 二.修改daemon配置文件/etc/docker/daemon.json ,将复制的地址按照如下格式写入文件,若存在多行,使用逗号分隔. ...

  4. H5 37-背景缩写

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. H5 文本属性

    06-文本属性 我是文字 我是文字 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是 ...

  6. vuex状态管理工具

    父子组件之间的通信  props传递  父 向子单向传递:且每次 父组件更新时  子组件的props会跟着更新: 如果需要 子组件把数据传递给父组件,就需要在子组件上绑定自定事件 在子组件使用this ...

  7. vue echarts 动态数据

    安装echarts依赖 npm install echarts -S 或者使用国内的淘宝镜像: 安装 npm install -g cnpm --registry=https://registry.n ...

  8. ElasticSearch 分组查询的几个例子

    facets接口可以根据query返回统计数据,其中的 terms_stats 是分组统计,根据key的情况返回value的统计数据,类似group by的意思. "terms_stats& ...

  9. 面向对象设计的SOLID原则、迪米特法则

    SPR(The Single Responsibility Principle):单一责任原则 OCP(The Open Closed Principle):开放封闭原则 LSP(The Liskov ...

  10. spring AOP源码分析(一)

    对于springAOP的源码分析,我打算分三部分来讲解:1.配置文件的解析,解析为BeanDefination和其他信息然后注册到BeanFactory中:2.为目标对象配置增强行为以及代理对象的生成 ...