//用map映射TLE,字典树就AC了
#include"cstdio"
#include"set"
using namespace std;
const int MAXN=;
const int N=;//26个小写英文字母
struct node{
int val;//存放字符串的hash值
node* next[N];
};
node memory[MAXN];
int ant;
node* root;
node* create_tree()
{
node* p=&memory[ant++];
for(int i=;i<N;i++)
{
p->next[i]=NULL;
}
return p;
} void insert(char *s,int x)
{
node* p=root;
for(int i=;s[i];i++)
{
int k=s[i]-'a';
if(p->next[k]==NULL) p->next[k]=create_tree();
p=p->next[k];
}
p->val=x;
} int search(char *s)
{
node* p=root;
for(int i=;s[i];i++)
{
int k=s[i]-'a';
if(p->next[k]==NULL) return -;
p=p->next[k];
}
return p->val;
} int par[MAXN];
int rnk[MAXN];
void init()
{
for(int i=;i<=MAXN;i++)
{
par[i]=i;
rnk[i]=;
}
} int fnd(int x)
{
if(par[x]==x)
{
return x;
}
return par[x]=fnd(par[x]);
} void unite(int x,int y)
{
int a=fnd(x);
int b=fnd(y);
if(a==b) return; if(rnk[a]<rnk[b])
{
par[a]=b;
}
else
{
par[b]=a;
if(rnk[a]==rnk[b]) rnk[a]++;
} } int deg[MAXN];
int cnt;
/*
bool judge()
{
int odd=0;
for(int i=0;i<cnt;i++)
{
if(deg[i]%2==1) odd++;
}
if(odd!=0&&odd!=2) return false;
int f=fnd(0);
for(int i=1;i<cnt;i++)
{
if(f!=fnd(i)) return false;
}
return true;
}
*/
int main()
{
root=create_tree();
init();
char a[];
char b[];
int numer=;
while(scanf("%s%s",a,b)!=EOF)
{
if(a[]=='') break;
int y1,y2;
y1=search(a);
y2=search(b);
if(y1==-)
{
y1=cnt;
insert(a,y1);
cnt++;
}
if(y2==-)
{
y2=cnt;
insert(b,y2);
cnt++;
}
deg[y1]++;
deg[y2]++;
unite(y1,y2);
} int l=;
set<int> vec;
for(int i=;i<cnt;i++)
{
if(deg[i]%==) l++;
}
if((l==)||l==) //满足欧拉回路
{
for(int i=;i<cnt;i++)
{
int x=fnd(i);
vec.insert(x);
}
if(vec.size()<=) //满足图的连通性
{
printf("Possible\n");
return ;
}
}
printf("Impossible\n"); return ;
}

POJ2513(字典树+图的连通性判断)的更多相关文章

  1. poj2513字典树+欧拉图判断+并查集断连通

    题意:俩头带有颜色的木棒,要求按颜色同的首尾相连,可能否? 思路:棒子本身是一条边,以俩端为顶点(同颜色共点),即求是否有无向图欧拉路(每条棒子只有一根, 边只能用一次,用一次边即选一次棒子). 先判 ...

  2. poj2513- Colored Sticks 字典树+欧拉通路判断

    题目链接:http://poj.org/problem?id=2513 思路很容易想到就是判断欧拉通路 预处理时用字典树将每个单词和数字对应即可 刚开始在并查集处理的时候出错了 代码: #includ ...

  3. HDU-2072-单词数(字典树)

    链接: https://vjudge.net/problem/HDU-2072 题意: lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面 ...

  4. leetcode之820. 单词的压缩编码 | python极简实现字典树

    题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...

  5. POJ 2513 - Colored Sticks - [欧拉路][图的连通性][字典树]

    题目链接: http://poj.org/problem?id=2513 http://bailian.openjudge.cn/practice/2513?lang=en_US Time Limit ...

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

    题目链接: https://vjudge.net/problem/POJ-2513 题目大意: 给一些木棍,两端都有颜色,只有两根对应的端点颜色相同才能相接,问能不能把它们接成一根木棍 解题思路: 题 ...

  7. POJ2513:Colored Sticks(字典树+欧拉路径+并查集)

    http://poj.org/problem?id=2513 Description You are given a bunch of wooden sticks. Each endpoint of ...

  8. poj2513 Colored Sticks —— 字典树 + 并查集 + 欧拉回路

    题目链接:http://poj.org/problem?id=2513 题解:通过这题了解了字典树.用字典树存储颜色,并给颜色编上序号.这题为典型的欧拉回路问题:将每种颜色当成一个点.首先通过并查集判 ...

  9. POJ2513 欧拉 + 字典树

    POJ 2513 有N根木棒,一根木棒有2头,我们把每头涂色(相同或不同),如果2根木棒有相同颜色的一端就可以连接,颜色全部不同就不能连接,现在给你N根木棒以及它们的颜色,问最后能不能链接成1条链. ...

随机推荐

  1. Django 之Form组件

    Django之From组件 扩展:Django 之 ModelForm组件 Form组件功能 Django的Form主要具有一下几大功能 生成HTML标签 验证用户数据(显示错误信息) HTML Fo ...

  2. Java语言实现简单FTP软件------>本地文件管理模块的实现(九)

    首先看一下界面: 1.本地文件列表的显示功能 将本地的当前目录下所有文件显示出来,并显示文件的属性包括文件名.大小.日期.通过javax.swing.JTable()来显示具体的数据.更改当前文件目录 ...

  3. 【模式识别】CART和GML AdaBoost MATLAB TOOLBOX

    GML AdaBoost Matlab Toolbox是一款很优秀的AdaBoost工具箱,内部实现了Real AdaBoost, Gentle AdaBoost和Modest AdaBoost三种方 ...

  4. http请求(get 和 post 请求)与响应

    版权声明:欢迎转载 https://blog.csdn.net/chenmoquan/article/details/36656101 一.http请求 http请求基本格式 ============ ...

  5. STM32 HAL库 UART使用printf

    // 添加这个函数 int fputc(int ch,FILE *f) { uint8_t temp[]={ch}; HAL_UART_Transmit(&UartHandle,temp,,) ...

  6. python基础7 ---python函数

    python基础知识 一.闭包函数 1.闭包函数的定义:在一个内部函数中,在对外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包. 2.闭包函数的特点:自带作用域和延迟计算 补 ...

  7. mysql语句优化技巧

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引 ...

  8. python中的一些坑(待补充)

    函数默认参数使用可变对象 def use_mutable_default_param(idx=0, ids=[]): ids.append(idx) print(idx) print(ids) use ...

  9. ionic新项目启动步骤

    1.sudo npm install -g gulp 2.SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install ...

  10. python 批量修改预定字符串并将修改后的字符串插入文件指定位置

    下面的例子是在文件的指定位置增加指定字符串的例子 修改配置文件: def add_str(pre_str): lines = [] flag = True f = open("z.txt&q ...