题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=230

题意:给你许许多多的木棍,没条木棍两端有两种颜色,问你在将木棍相连时,接触的端点颜色必须相同,是否能把它们都连起来

思路:很明显的欧拉路径,但题目给的字符串数据很大,得用字典树存取。

代码如下:

#include "stdio.h"
#include "string.h"
#include "stdlib.h" #define N 505000
int set[N],du[N]; int find(int x)
{
if(set[x]==-1) return x;
return set[x]=find(set[x]);
}
void bing(int a,int b)
{
int fa = find(a);
int fb = find(b);
if(fa!=fb) set[fa] = fb;
} struct node
{
struct node *next[26];
int num;
};
int id; void BFS(node *root);
int Trie(node *root,char *s);
void Date_process(int n)
{
int i=0;
int t1,t2;
char s1[15],s2[15];
node *root = (node *)malloc(sizeof(node));
for(i=0; i<26; ++i)
root->next[i] = NULL;
root->num = -1;
id = 0;
memset(du,0,sizeof(du));
memset(set,-1,sizeof(set)); for(i=0; i<n; ++i)
{
scanf("%s %s",s1,s2);
t1 = Trie(root,s1);
t2 = Trie(root,s2);
du[t1]++;
du[t2]++;
bing(t1,t2);
}
BFS(root);
} int main()
{
int T;
int i,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
getchar();
if(n==0)
{
printf("Possible\n");
continue;
}
Date_process(n);
bool flag = true;
int k = find(0);
for(i=0; i<id; ++i)
{
if(find(i)!=k)
flag = false;
}
if(!flag) //若该图不连通,Impossible
{
printf("Impossible\n");
continue;
}
int ans=0;
for(i=0; i<id; ++i)
{
if(du[i]%2==1)
ans++;
}
if(ans==2 || ans==0) //欧拉回路或者欧拉路径 Possible
printf("Possible\n");
else
printf("Impossible\n");
}
return 0;
} int Trie(node *root,char *s) //字典树
{
int i=0;
node *p=root;
while(s[0]!='\0')
{
if(p->next[s[0]-'a']==NULL)
{
node *tt;
tt = (node *)malloc(sizeof(node));
tt->num = -1;
for(i=0; i<26; ++i) tt->next[i] = NULL;
p->next[s[0]-'a'] = tt;
p = tt;
}
else
p = p->next[s[0]-'a'];
s++;
}
if(p->num==-1)
p->num = id++;
return p->num;
} void BFS(node *root) //深搜释放内存
{
int i;
if(root==NULL) return ;
for(i=0; i<26; i++)
{
if(root->next[i]!=NULL)
BFS(root->next[i]);
}
free(root);
}

nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路的更多相关文章

  1. 优先队列 + 并查集 + 字典树 + 欧拉回路 + 树状数组 + 线段树 + 线段树点更新 + KMP +AC自动机 + 扫描线

    这里给出基本思想和实现代码 . 优先队列 : 曾经做过的一道例题       坦克大战 struct node { int x,y,step; friend bool operator <(no ...

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

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

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

    https://vjudge.net/problem/POJ-2513 题解转载自:優YoU  http://user.qzone.qq.com/289065406/blog/1304742541 题 ...

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

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

  5. PKU 2513 Colored Sticks(并查集+Trie树+欧拉路径(回路))

    题目大意: 给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相连接的一端必须是同颜色的. 解题思路: 可以用图论中欧拉路的知识来解这道题,首先可以把木棒两端看成节点 ...

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

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

  7. UVA1455 - Kingdom(并查集 + 线段树)

    UVA1455 - Kingdom(并查集 + 线段树) 题目链接 题目大意:一个平面内,给你n个整数点,两种类型的操作:road x y 把city x 和city y连接起来,line fnum ...

  8. 【bzoj5133】[CodePlus2017年12月]白金元首与独舞 并查集+矩阵树定理

    题目描述 给定一个 $n\times m$ 的方格图,每个格子有 ↑.↓.←.→,表示从该格子能够走到相邻的哪个格子.有一些格子是空着的,需要填上四者之一,需要满足:最终的方格图中,从任意一个位置出发 ...

  9. 并查集&线段树&树状数组&排序二叉树

    超级无敌巨牛逼并查集(带权并查集)https://vjudge.net/problem/UVALive-4487 带删点的加权并查集 https://vjudge.net/problem/UVA-11 ...

随机推荐

  1. Entity FrameWork 延迟加载的本质(一)

    1.集合的标准查询运算符方法,是来自于System.Linq.Enumerable里给IEnumerable接口添加的扩展方法 2.EF上下文里的DBSet<T>里的标准查询运算符方法,来 ...

  2. 记录一次Mac虚拟机安装的过程(有图有真相)

    这是我今天在公司用Vmware workstation虚拟机安装小狮子的全过程,记录一下没什么特别的用途,希望以后不要忘记,整个过程我总共花了半个多小时,挺快的.确实苹果的系统配上苹果的电脑就是牛叉, ...

  3. PHP常规模板引擎中与CSS/JSON冲突的解决

    主要针对对象:Smarty/Dwoo 参考:http://developer.51cto.com/art/201009/224929.htm 其实以前都不怎么关注模板引擎,觉得没必要使用.但随着年龄的 ...

  4. dstat 备忘

    http://dag.wiee.rs/home-made/dstat/#download https://github.com/dagwieers/dstat http://lhflinux.blog ...

  5. 由简入繁实现Jquery树状结构

    在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一些插件,也是可以实现这些效果的,比 ...

  6. 快速设置超炫banner,js插件

    http://www.themepunch.com/codecanyon/revolution_wp/ 记录一下以后用 //出自http://www.cnblogs.com/ahjesus 尊重作者辛 ...

  7. 跨平台的 SQL 客户端

    The major update to SQL client was to move to the .NET Core networking libraries instead of the nati ...

  8. Cookies简介和使用

    Cookie public class javax.servlet.http.Cookie  1作用(1)Cookie能使站点跟踪特定访问者的访问次数.最后访问时间和访问者进入站点的路径(2)Cook ...

  9. 我为什么要做富文本编辑器【wangEditor5个月总结】

    请访问wangEditor官网:www.wangEditor.com ----------------------------------------------------------------- ...

  10. jQuery源码分析-02正则表达式-RegExp-常用正则表达式

    2.4 常用正则表达式在网上找到一篇广为流传的文章<常用正则表达式>,逐一分析,不足地方进行补充和纠正. 常用的数字正则(严格匹配) 正则 含义 ^[1-9]\d*$ 匹配正整数 ^-[1 ...