Some major cities have subway systems in the form of a tree, i.e. between any pair of stations, there is one and only one way of going by subway. Moreover, most of these cities have a unique central station. Imagine you are a tourist in one of these…
题目链接:http://poj.org/problem?id=1635 题意:给定两个由01组成的串,0代表远离根,1代表接近根.相当于每个串对应一个有根的树.然后让你判断2个串构成的树是否是同构的. 思路:首先根据01串构造出树,然后求树的最小表示法判断同构. 详情参照:https://www.byvoid.com/blog/directed-tree-bracket-sequence/ #define _CRT_SECURE_NO_DEPRECATE #include<iostream>…
给两棵有根树,判断是否同构.因为同构的树的最小表示法唯一,那么用最小表示法表示这两棵树,即可判断同构.顺便如果是无根树的话可以通过选出重心以后套用之前的方法. AC代码如下: #include <stdio.h> #include <algorithm> #include <string.h> #include <string> #include <iostream> #include <vector> using namespace…
4337: BJOI2015 树的同构 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1023  Solved: 436[Submit][Status][Discuss] Description 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树就成为有根树. 对于两个树T1和T2,如果能够把树T1的所有点重新标号,使得树T1和树T2完全相 同,那么这两个树是同…
题意:用一个字符串表示树,0代表向下走,1代表往回走,求两棵树是否同构. 分析:同构的树经过最小表示会转化成两个相等的串. 方法:递归寻找每一棵子树,将根节点相同的子树的字符串按字典序排列,递归回去即可.最终得到的串将是这棵树的最小表示. 举例:0010011101001011,表示的树如下 根节点下的三棵子树分别为00100111.01.001011 大的原则是:递归过程中,每次都将当前这棵树的所有子树的字符串排序. 00100111这棵子树,将它的根结点设为S,它的子树是01和0011,那么…
/*zoj1990Subway Tree Systems题目大意:初始时站在树的根节点,若朝着远离根的方向走,记录“”,接近根的方向走记录“”.并且树的每一条边只能来回走一次(即向下和返回).一个合法的序列可以描述出一棵树的形态.现在给出两个合法的序列,判断两棵树是否同构.分析:由于根节点确定,若两棵树同构,无非就是把子树的位置交换了一下.很自然的想法就是:将树的子树按照某种规则进行排序,若排序之后两个字符串相等,则同构:否则不同构.现在来分析一下序列,可以看出,当一个串的“”和“”个数相等时,…
题意:一串01序列,从一个点开始,0表示去下一个点,1表示回到上一个点,最后回到起点,遍历这棵树时每条边当且仅当走2次(来回) 给出两串序列,判断是否是同一棵树的不同遍历方式 题解:我们把每一个节点下个每棵子树形成的01序列排序(我们把01序列看做括号序列,0看做'(',  1看做‘)’,则就是把每个并列的括号序列排序),再比较得出的字符串就好. 方法:把不标准的东西标准化,再比较.注意我们要保证标准化是唯一的 #include<set> #include<map> #includ…
题目大意: 用一堆01字符串表示在树上走动的路径,0表示往前走,1表示往回走,问两种路径方式下形成的树是不是相同的树 我们可以利用递归的方法用hash字符串表示每一棵子树,然后将所有子树按照字典序排序,来判断这个hash字符串是否相同 #include <cstdio> #include <cstring> #include <iostream> #include <string> #include <algorithm> #include &l…
LINK:模板 树同构 题目说的很迷 给了一棵有根树 但是重新标号 言外之意还是一棵无根树 然后要求判断是否重构. 由于时无根的 所以一个比较显然的想法暴力枚举根. 然后做树hash或者树的最小表示法. 前者做一次时n^2logn的 而后者则是严格的n^2logn的. 这样加上暴力枚举根就是n^3logn了. 最后我们将这些东西再sort一下和其他的树做对比 如果所有的都完全一致那么说明时同构的. 算法正确性 首先完全一样的树 再做树hash或者最小表示法时 得到的东西必然一样. 这个可以利用递…
Tree nesting (CF762F) Description 有两个树 S.T,问 S 中有多少个互不相同的连通子图与 T 同构.由于答案 可能会很大,请输出答案模 1000000007 后的值. 两个连通子图 P.Q 称为互不相同的,当且仅当存在一个点 v∈S,使得 v∈P 与 v∈Q 恰好有一个成立. 图 G 与 H(在此题中 G 与 H 均为树)同构的定义为,存在一个一一映射 f, G 中任意一点 u 在 H 中都有唯一的点 v 与之对应:同样对 H 中任意一点 v 也有唯 一的在…