题目链接:http://poj.org/problem?id=1635

题目大意:给你两棵树的dfs描述串,从根节点出发,0代表向深搜,1代表回溯。

我刚开始自己设计了哈希函数,不知道为什么有问题。。。。参考了http://www.cnblogs.com/jackiesteed/articles/2065307.html,他的就是对的。。我也不知道为什么。。

 #include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
#include <string>
#include <set>
#include <ctime>
#include <cstdlib>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
typedef vector<int> vec;
typedef vector<vec> mat;
#define AA first
#define BB second
#define PB push_back int T,h[];
char a[],b[];
char *p; void init(){
srand(time(NULL));
for(int i=;i<;i++){
h[i] = rand()%;
}
} int calc_hash(int i){
int res = h[+i];
while(*p&&*p++==''){
res = (res + h[i]*calc_hash(i+))%;
}
return (res*res)%;
} int main(){
init();
scanf("%d",&T);
while( T-- ){
scanf("%s%s",a,b);
p = a;
int ha = calc_hash();
p = b;
int hb = calc_hash();
if( ha==hb ) puts("same");
else puts("different");
}
return ;
}

[POJ 1635] Subway tree systems (树哈希)的更多相关文章

  1. poj 1635 Subway tree systems(树的最小表示)

    Subway tree systems POJ - 1635 题目大意:给出两串含有‘1’和‘0’的字符串,0表示向下搜索,1表示回溯,这样深搜一颗树,深搜完之后问这两棵树是不是同一棵树 /* 在po ...

  2. POJ 1635 Subway tree systems 有根树的同构

    POJ 1635 题目很简单 给个3000节点以内的根确定的树 判断是否同构.用Hash解决,类似图的同构,不过效率更高. #include<iostream> #include<c ...

  3. POJ 1635 Subway tree systems (树的最小表示法)

    题意:一串01序列,从一个点开始,0表示去下一个点,1表示回到上一个点,最后回到起点,遍历这棵树时每条边当且仅当走2次(来回) 给出两串序列,判断是否是同一棵树的不同遍历方式 题解:我们把每一个节点下 ...

  4. HDU 1954 Subway tree systems (树的最小表示法)

    题意:用一个字符串表示树,0代表向下走,1代表往回走,求两棵树是否同构. 分析:同构的树经过最小表示会转化成两个相等的串. 方法:递归寻找每一棵子树,将根节点相同的子树的字符串按字典序排列,递归回去即 ...

  5. 【POJ】【1635】Subway Tree Systems

    树的最小表示法 给定两个有根树的dfs序,问这两棵树是否同构 题解:http://blog.sina.com.cn/s/blog_a4c6b95201017tlz.html 题目要求判断两棵树是否是同 ...

  6. poj-1635 Subway tree systems(推断两个有根树是否同构)-哈希法

    Description Some major cities have subway systems in the form of a tree, i.e. between any pair of st ...

  7. POJ - 3321 Apple Tree (线段树 + 建树 + 思维转换)

    id=10486" target="_blank" style="color:blue; text-decoration:none">POJ - ...

  8. 【树哈希】poj1635 Subway tree systems

    题意:给你两颗有根树,判定是否同构. 用了<Hash在信息学竞赛中的一类应用>中的哈希函数. len就是某结点的子树大小,g是某结点的孩子数+1. 这个值也是可以动态转移的!具体见论文,所 ...

  9. POJ1635 Subway tree systems ——(判断树的同构,树的最小表示法)

    给两棵有根树,判断是否同构.因为同构的树的最小表示法唯一,那么用最小表示法表示这两棵树,即可判断同构.顺便如果是无根树的话可以通过选出重心以后套用之前的方法. AC代码如下: #include < ...

随机推荐

  1. Windows电脑上安装Appium

    Windows机器上,除了JAVA的安装和配置外,安装Appium需要如下设置: 0. 安装SDK后设置环境变量 1)新建JAVA_HOME: SDK安装路径,如D:\Program Files\Ja ...

  2. javascript 中根据sort 方法随机数组 (Math.random)

    var arr = [1,2,3,4,5,6,7,8,9,10]; function Arandom(a,b){ return (Math.random() > 0.5) ? 1 : -1;; ...

  3. 转:Why SeaJS

    原文地址:http://chaoskeh.com/blog/why-seajs.html Why SeaJS 前言 本文主要面向刚接触 SeaJS 的同学.文章会先提出传统 Javascript 开发 ...

  4. Hibernate3回顾-2-相关概念

    2.几个概念 HIbernate简要的体系结构如下图所示 通过上图能够发现HIbernate需要一个hibernate.properties文件,该文件用于配置Hibernate和数据库连接的信息.还 ...

  5. MySQL瘦身

    解压mysql-x.y.z-win32|64.zip 删除不用的目录:保留bin.data.share三个文件夹 删除bin里的多余文件:保留mysqld.exe.mysqladmin.exe (如果 ...

  6. Env:autojump安装使用

    注:这里只介绍我使用的方式,当然不是唯一方式 作用:autojump可以快速进行路径导航,具备记忆历史路径:不仅仅是可以进入当前路径下的某个路径,也可以是其他历史路径 1. 下载 首先,$ git c ...

  7. 【转】C#中判断扫描枪输入与键盘输入

    提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBox,当条码无法扫描时,需要手工输入.如果是扫描枪输入时,我们将自动去判读条码,而手工输入时,最终需要加按回车键确认后判读条码.这时候我 ...

  8. Navicat(连接)-1

    连接 要在 Navicat 开始使用你的服务器,你要首先用连接窗口创建一个或多个连接.如果你是一个服务器新手和不肯定如何工作,你可能想看看: MySQL 用户手册 Oracle 数据库文件 Postg ...

  9. NSString类的相关用法

    一.NSString字符串连接NSString* string; // 结果字符串 NSString* string1, string2; //已存在的字符串 1. string = [NSStrin ...

  10. Storm的数据处理编程单元:Bolt 学习整理

    Bolt是Topology中的数据处理的单元,也是Storm针对处理过程的编程单元.Topology中所有的处理都是在这些Bolt中完成的,编程人员可以实现自定义的处理过程,例如,过滤.函数.聚集.连 ...