bzoj 4337 树的同构
4337: BJOI2015 树的同构
Description
Input
Output
Sample Input
4 0 1 1 2
4 2 0 2 3
4 0 1 1 1
4 0 1 2 3
Sample Output
1
3
1
HINT
/* ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ ◇◇◇◇◇◇◆◆◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇ ◇◇◇◇◇◇◆◆◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◆◆◇◇◇◇◇◇◇◇◇ ◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇ ◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◆◇◆◆◆◇◇◇◇◇ ◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇◇◇◇◆◆◆◆◆◇◇◇◇◇◇◇◇◇◇◆◆◆◆◆◇◇◇◇◇ ◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇◇◇◇◆◆◆◆◆◇◇◇◇◇◇◇◇◇◇◆◆◇◆◆◇◇◇◇◇ ◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇◇◇◇◇◇◆◆◇◇◇◇◇◇◇◇◇◇◇◆◇◇◇◆◇◇◇◇◇ ◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇◇◇◇◇◆◆◇◇◇◇◇◇◇◇◇◇◇◇◆◇◇◇◆◇◇◇◇◇ ◇◇◇◇◇◇◇◆◇◇◇◇◇◇◇◇◇◇◇◇◆◆◆◇◆◇◇◇◇◇◇◇◇◇◇◆◇◇◇◆◇◇◇◇◇ ◇◇◇◇◇◇◆◆◆◆◇◇◇◇◇◇◇◇◇◇◆◆◆◆◆◇◇◇◇◇◇◇◇◇◆◆◆◇◆◆◆◇◇◇◇ ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ */ #include<iostream> #include<cstdio> #include<cstring> #include<ctime> #include<cstdlib> #include<algorithm> #include<cmath> #include<string> #include<vector> using namespace std; int read(){int xx=0,ff=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-')ff=-1;ch=getchar();}while(ch>='0'&&ch<='9'){xx=xx*10+ch-'0';ch=getchar();}return xx*ff; } const int maxn=55; int T,N[maxn],lin[maxn],len; struct edge{int y,next; }e[maxn<<1]; inline void insert(int xx,int yy){e[++len].next=lin[xx];lin[xx]=len;e[len].y=yy; } string H[maxn][maxn]; string temp[maxn]; int son[maxn][maxn],cnt[maxn]; bool mycmp(const int &xx,const int &yy) {return temp[xx]<temp[yy];} void dfs(int x,int fa){cnt[x]=0;for(int i=lin[x];i;i=e[i].next)if(e[i].y!=fa){dfs(e[i].y,x);son[x][++cnt[x]]=e[i].y;}sort(&son[x][1],&son[x][cnt[x]+1],mycmp);temp[x]="(";for(int i=1;i<=cnt[x];i++)temp[x]+=temp[son[x][i]];temp[x]+=")"; } bool check(int x,int y){if(N[x]!=N[y])return 0;for(int i=1;i<=N[x];i++)if(H[x][i]==H[y][1])return 1;return 0; } int main(){//freopen("in.txt","r",stdin);T=read();for(int i=1;i<=T;i++){N[i]=read();memset(lin,0,sizeof(lin));len=0;for(int j=1;j<=N[i];j++){int t=read();if(t)insert(j,t),insert(t,j);}for(int j=1;j<=N[i];j++){dfs(j,0);H[i][j]=temp[j];}}for(int i=1;i<=T;i++)for(int j=1;j<=i;j++)if(check(i,j)){printf("%d\n",j);break;}/*for(int i=1;i<=T;i++){for(int j=1;j<=N[i];j++)cout<<H[i][j]<<endl;cout<<endl;}*/return 0; }
View Code
转载于:https://www.cnblogs.com/lzhAFO/p/8886512.html
bzoj 4337 树的同构相关推荐
- 无根树的同构:Hash最小表示法(bzoj 4337: BJOI2015 树的同构)
这里的同构是指: 对于两棵树A, B,如果能通过重新标号使得两棵树完全相同,则称树A和B同构 Hash最小表示法步骤: ①暴力每个节点为根 ②对于当前根x,对树进行DFS ③DFS时对每个节点维护一个 ...
- 【BZOJ - 4337】BJOI2015 树的同构(树哈希)
题干: 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树就成为有根树. 对于两个树T1和T2,如果能够把树T1的 ...
- [树hash]BZOJ 4337——BJOI2015 树的同构
题目梗概 对于两个树T1和T2,如果能够把树T1的所有点重新标号,使得树T1和树T2完全相 同,那么这两个树是同构的. 有M个有根树,请你把它们按同构关系分成若干个等价类. 解题思路 第一次写树has ...
- 4337: BJOI2015 树的同构
4337: BJOI2015 树的同构 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 171 Solved: 81 [ Submit][ St ...
- [BJOI2015] 树的同构
4337: BJOI2015 树的同构 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 1092 Solved: 460 [Submit][Stat ...
- 树根c语言,03-树1 树的同构 (C语言链表实现)
#include #include #include #include typedef char ElemType; typedef struct BinTree { ElemType data; s ...
- [BJOI2015]树的同构
嘟嘟嘟 判断树的同构的方法就是树上哈希. 如果树是一棵有根树,那么只要从根节点出发dfs,每一个节点的哈希值等于按传统方式算出来的子树的哈希值的结果.需要注意的是,算完子树的哈希值后要先排序再加起来, ...
- PTA 03-树1 树的同构 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/711 5-3 树的同构 (25分) 给定两棵树T1和T2.如果T1可以通过若干次左右 ...
- 树的同构(c语言静态链表实现)
题目 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A.B.G的左右孩子 ...
最新文章
- 基于GPUImage的美颜BeautifyFace详细注释
- GetLastError()函数返回值及含义
- AirPrint: 无交互的后台打印实现(Print without UI,iOS8+)
- interactive_timeout和wait_timeout之间的区别
- 【整理】Spring 常用注解!千万不要错过!
- php rewrite url_PHP实现url重写和.htaccess
- MySQL数据库的回滚失败(JAVA)
- 复习:稀疏链表的十字链表
- 一款优秀的前端JS框架—AngularJS
- Source Insight 中查看日文注释
- SDN、NFV:一枝独秀不是春
- vivo x6plus支持html,vivo x6plus手机USB驱动
- Android6.0之AMS如何启动app中篇之Task的管理
- C++写的12306抢票软件
- Windows任务计划定时运行程序的配置方法
- Agth 辅助工具(GAL用agth进行自动翻译工具)
- ITIL入门 ITSM入门 事件入门 事件管理入门
- Longhorn云原生文件存储
- 详解 Python 中的 filter() 函数
- 亚马逊入驻商用户画像分析
热门文章
- 计算机网络的非性能特征PPT,计算机网络概述课件课件.ppt
- php observer,php设计模式 Observer (观察者模式)
- MYSQL中的SELECT查询时进行运算
- Java Integer.compareTo()比较大小
- java读文件指定行开始到文件的最后
- @Autowired 与@Resource的区别
- BIM 360 Docs API在操作欧洲数据中心内容的一些调整
- 使用VS2012遇到的问题
- vbox里面的Ubuntu虚拟机与主机win7之间设置共享文件夹
- 【maven详解-插件】maven插件学习之maven-source-plugin