http://poj.org/problem?

id=2513

最初看到 第一感觉---map  一看250000的数据量 果断放弃

然后记得曾经看过。trie取代map。尤其当数据量特别大的时候

学到了:

1、Trie取代map的思想,能够在单词结尾的tree[i][tk]  这个i作为字符串相应的int值 。当然这个int值也能够用于建立并查集

2、接上。通过并查集推断。全部的点在同一个集合图就是联通的,否则不联通,注意tree[i][tk]>0 表示是单词结尾。

    x=Find(x);//这句没有的时候调试了几下。

。。
int flag=1;
for(int i=1;i<top;i++)
{
if(tree[i][tk] && x!=Find(i))
{
flag=0;
break;
}
if(tree[i][tk]%2)cnt++;
}

注意,并查集并不保证全部在同一个集合的点的father同样,所以还是要通过Find(x)==Find(y)推断是不是在同一个集合,而不能father相等推断。

3、无向图欧拉通路存在的判定:

a、联通,并查集去做

b、度数为奇数的个数为0或2---------------0 无向图存在欧拉回路,2  无向图存在欧拉通路 是半欧拉图

#include<cstdio>
#include<cstring>
#include <string>
#include <map>
#include <iostream>
#include <cmath>
using namespace std;
#define INF 10000 const int tk=26,tb='a';
const int N = 5000000+1000;//2500000+1000;
//int d[N];
int tree[N][tk+1],top,n;
int father[N],pos[N],scnt;
char pat1[15],pat2[15];
void init()
{
top=1;
scnt=n=0;
memset(tree[0],0,sizeof(tree[0]));
//makeset
for(int i=0;i<N;i++)
father[i]=i;
} int Insert(char *s, int Rank=0)
{
int rt,nxt;
for(rt=0; *s; rt=nxt,++s)
{
nxt=tree[rt][*s-tb];
if(!nxt)
{
nxt=tree[rt][*s-tb]=top;
memset(tree[top],0,sizeof(tree[top]));
top++;
}
}
tree[rt][tk]++;
return rt;
}
int Find(int x)
{
if(x!=father[x])father[x]=Find(father[x]);
return father[x];
}
void Union(int x, int y)
{
x=Find(x),y=Find(y);
if(x==y)return;
father[y]=x;
}
int main()
{
//freopen("poj2513.txt","r",stdin);
init();
int cnt=0,x,y;
while(scanf("%s%s",pat1,pat2)!=EOF)
{
x=Insert(pat1);
y=Insert(pat2);
Union(x,y);
}
x=Find(x);//这句没有的时候调试了几下。。。
int flag=1;
for(int i=1;i<top;i++)
{
if(tree[i][tk] && x!=Find(i))
{
flag=0;
break;
}
if(tree[i][tk]%2)cnt++;
}
if(!(
cnt==2
|| cnt == 0)
)flag=0;
if(flag)printf("Possible\n");
else printf("Impossible\n");
return 0;
}

poj 2513 欧拉回路+并查集推断是否联通+Trie树的更多相关文章

  1. [学习笔记]可持久化数据结构——数组、并查集、平衡树、Trie树

    可持久化:支持查询历史版本和在历史版本上修改 可持久化数组 主席树做即可. [模板]可持久化数组(可持久化线段树/平衡树) 可持久化并查集 可持久化并查集 主席树做即可. 要按秩合并.(路径压缩每次建 ...

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

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

  3. poj 1386 Play on Words门上的单词【欧拉回路&&并查集】

    题目链接:http://poj.org/problem?id=1386 题目大意:给你若干个字符串,一个单词的尾部和一个单词的头部相同那么这两个单词就可以相连,判断给出的n个单词是否能够一个接着一个全 ...

  4. HDU 1116 || POJ 1386 || ZOJ 2016 Play on Words (欧拉回路+并查集)

    题目链接 题意 : 有很多门,每个门上有很多磁盘,每个盘上一个单词,必须重新排列磁盘使得每个单词的第一个字母与前一个单词的最后一个字母相同.给你一组单词问能不能排成上述形式. 思路 :把每个单词看成有 ...

  5. Colored Sticks POJ - 2513 并查集+欧拉通路+字典树hash

    题意:给出很多很多很多很多个棒子 左右各有颜色(给出的是单词) 相同颜色的可以接在一起,问是否存在一种 方法可以使得所以棒子连在一起 思路:就是一个判欧拉通路的题目,欧拉通路存在:没奇度顶点   或者 ...

  6. ACM: FZU 2112 Tickets - 欧拉回路 - 并查集

     FZU 2112 Tickets Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u P ...

  7. poj 2524 (并查集)

    http://poj.org/problem?id=2524 题意:在一所学校里面的人,都有宗教信仰,不过他们的宗教信仰有可能相同有可能不同,但你又不能直接去问他们,但你可以问他们和谁是同一个宗教.通 ...

  8. POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)

    Colored Sticks DescriptionYou are given a bunch of wooden sticks. Each endpoint of each stick is col ...

  9. nyist 42 一笔画 (欧拉回路 + 并查集)

    nyoj42 分析: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径. 若该路径是一个圈,则称为欧拉(Euler)回路. 具有欧拉回路的图称为欧拉图(简称E图).具有欧拉路 ...

随机推荐

  1. Spring中的InitializingBean接口

    InitializingBean接口为bean提供了初始化方法的方式,它只有afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法. 测试程序如下: impo ...

  2. Linux 网络搭建

    如果系统环境崩溃.   调用/usr/bin/vim /etc/profile Windows    1 本地连接使用固定IP   vmware 8    2  修改Windows的hosts地址   ...

  3. 设计模式实例(Lua)笔记之七(Decorator模式)

    1.描写叙述 就说说"我"上小学的的糗事吧. 我上小学的时候学习成绩非常的差,班级上 40 多个同学,我基本上都是在排名 45 名以后,依照老师给我的定义就是"不是读书的 ...

  4. fedora linux源代码下载

    yumdownloader --source kernel 如果是下载insight 就是 yumdownloader --source insight 下载到的是当前目录. 然后在用rpm2cpio ...

  5. word2vec词向量训练及中文文本类似度计算

    本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...

  6. Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI

    准备工作:Eclipse ADT IDE 开发工具,NDK .Java 环境,博主的配置是:Windows x86 , ADT Build: v22.3.0-887826 , JAVA 1.7, ND ...

  7. 配置 Phpstorm + Xdebug + xampp

    配置 Phpstorm + Xdebug + xampp 1 Xampp 安装好xampp,配置 httpd.conf 在xampp面板中 单击后会出现一些配置文件,httpd.conf位于第一个 将 ...

  8. Unity学习笔记 之 发射小球碰撞物体的代码记录

    绑定在摄像机上的脚本 using UnityEngine; using System.Collections; public class abc : MonoBehaviour { //设置移动速度 ...

  9. BZOJ 1057: [ZJOI2007]棋盘制作 悬线法求最大子矩阵+dp

    1057: [ZJOI2007]棋盘制作 Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑 ...

  10. bzoj4568: [Scoi2016]幸运数字(LCA+线性基)

    4568: [Scoi2016]幸运数字 题目:传送门 题解: 好题!!! 之前就看过,当时说是要用线性基...就没学 填坑填坑: %%%线性基 && 神犇 主要还是对于线性基的运用和 ...