POJ2513(字典树+图的连通性判断)
//用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(字典树+图的连通性判断)的更多相关文章
- poj2513字典树+欧拉图判断+并查集断连通
题意:俩头带有颜色的木棒,要求按颜色同的首尾相连,可能否? 思路:棒子本身是一条边,以俩端为顶点(同颜色共点),即求是否有无向图欧拉路(每条棒子只有一根, 边只能用一次,用一次边即选一次棒子). 先判 ...
- poj2513- Colored Sticks 字典树+欧拉通路判断
题目链接:http://poj.org/problem?id=2513 思路很容易想到就是判断欧拉通路 预处理时用字典树将每个单词和数字对应即可 刚开始在并查集处理的时候出错了 代码: #includ ...
- HDU-2072-单词数(字典树)
链接: https://vjudge.net/problem/HDU-2072 题意: lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面 ...
- leetcode之820. 单词的压缩编码 | python极简实现字典树
题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...
- POJ 2513 - Colored Sticks - [欧拉路][图的连通性][字典树]
题目链接: http://poj.org/problem?id=2513 http://bailian.openjudge.cn/practice/2513?lang=en_US Time Limit ...
- POJ-2513 Colored Sticks---欧拉回路+并查集+字典树
题目链接: https://vjudge.net/problem/POJ-2513 题目大意: 给一些木棍,两端都有颜色,只有两根对应的端点颜色相同才能相接,问能不能把它们接成一根木棍 解题思路: 题 ...
- POJ2513:Colored Sticks(字典树+欧拉路径+并查集)
http://poj.org/problem?id=2513 Description You are given a bunch of wooden sticks. Each endpoint of ...
- poj2513 Colored Sticks —— 字典树 + 并查集 + 欧拉回路
题目链接:http://poj.org/problem?id=2513 题解:通过这题了解了字典树.用字典树存储颜色,并给颜色编上序号.这题为典型的欧拉回路问题:将每种颜色当成一个点.首先通过并查集判 ...
- POJ2513 欧拉 + 字典树
POJ 2513 有N根木棒,一根木棒有2头,我们把每头涂色(相同或不同),如果2根木棒有相同颜色的一端就可以连接,颜色全部不同就不能连接,现在给你N根木棒以及它们的颜色,问最后能不能链接成1条链. ...
随机推荐
- jar -cmf file1 file2 file3命令
jar -cmf file1 file2 file3中的参数c.m.f和file1.file2.file3是一一对应的. 也就是说,file1是输出的.jar文件,file2是往META-INF/MA ...
- Visual studio 创建文件时自动添加备注
Visual studio 创建文件时自动添加备注 描述 要求每回添加一个类,普通类或单元测试类文件头自动添加备注, 比如:Copyright, FileName, Author and so on. ...
- Android笔记之GridView
完整Demo链接:https://pan.baidu.com/s/1d_G9aCwBxpiYQcdQhwSDDw,提取码:5deh 效果图 activity_main.xml <?xml ver ...
- GPS模块坐标偏差很大?
回答这个问题,首先要了解几个概念: 火星坐标系:天朝有关部门规定,为了保证国家安全,所有的地图公司提供的地图必须对实际的GPS坐标进行一定的偏移,偏移后的GPS坐标系俗称火星坐标系,而这个偏移是不固定 ...
- MainWindows
开发带有菜单栏状态栏等常用windows应用时候使用
- onActivityResult方法不执行,什么原因?
原因: public void OnOpenPlayersActivity(View view) { Intent intent = new Intent(); intent.setClass(g ...
- 【leetcode刷题笔记】Reverse Words in a String
Given an input string, reverse the string word by word. For example,Given s = "the sky is blue& ...
- C程序员必须知道的内存知识【英】
C程序员必须知道的内存知识[英] 时间 2015-03-08 14:16:11 极客头条原文 http://marek.vavrusa.com/c/memory/2015/02/20/memory ...
- Codeforces 897C Nephren gives a riddle:模拟【珂学】
题目链接:http://codeforces.com/contest/897/problem/C 题意: 给你一些字符串: A: [What are you doing at the end of t ...
- WCF寄宿(Host)之自我寄宿(Self-Hosting)简单实例【Windows应用程序宿主】
前言: 以各种应用程序做自我寄宿的宿主原理方法大同小异,故:这儿直接上案例! 步骤一:创建服务契约和服务 1.新建解决方案:添加WCF服务库项目. 2.为了演示,我把自动生成的接口以及实现接口的类删 ...