BZOJ 4337: BJOI2015 树的同构|Hash
此题三战三卒……!!
一卒:没有考虑连边的顺序。
二卒:用排序解决了连边的顺序,然后用重心似乎搞不了……
三卒:考虑到rp问题,换了换hash的数..三卒!
扔了重心终于A掉了
可以用括号序列,然后hash,不过我hash的姿势有点怪怪的
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<iostream>
#include<algorithm>
#include<ctime>
#define ll unsigned long long
using namespace std;
int sc()
{int i=0; char c=getchar();while(c>'9'||c<'0')c=getchar();while(c>='0'&&c<='9')i=i*10+c-'0',c=getchar();return i;
}
ll ans[55][55];
int head[55],lst[555],nxt[555];
int size[55],sum[55],Ans[55];
int tot,n,m,mn;
void insert(int x,int y)
{lst[++tot]=y;nxt[tot]=head[x];head[x]=tot;
}
ll hash(int x,int f)
{ll q[55],ans='(';int top=0; for(int i=head[x];i;i=nxt[i])if(lst[i]!=f)q[++top]=hash(lst[i],x);sort(q+1,q+top+1);for(int i=1;i<=top;i++)ans=ans*233+q[i];return ans*233+')';
}
int main()
{int Q=sc();for(int i=1;i<=Q;i++){memset(head,0,sizeof(head));tot=0;n=sc();for(int j=1;j<=n;j++){int x=sc();if(x)insert(x,j),insert(j,x);}for(int j=1;j<=n;j++)ans[i][j]=hash(j,0);sort(ans[i]+1,ans[i]+n+1);for(int j=1;j<=i;j++){int k;for(k=1;k<=n;k++)if(ans[i][k]!=ans[j][k])break;if(k>n){printf("%d\n",j);break;}}}return 0;
}
BZOJ 4337: BJOI2015 树的同构|Hash相关推荐
- 无根树的同构:Hash最小表示法(bzoj 4337: BJOI2015 树的同构)
这里的同构是指: 对于两棵树A, B,如果能通过重新标号使得两棵树完全相同,则称树A和B同构 Hash最小表示法步骤: ①暴力每个节点为根 ②对于当前根x,对树进行DFS ③DFS时对每个节点维护一个 ...
- [树hash]BZOJ 4337——BJOI2015 树的同构
题目梗概 对于两个树T1和T2,如果能够把树T1的所有点重新标号,使得树T1和树T2完全相 同,那么这两个树是同构的. 有M个有根树,请你把它们按同构关系分成若干个等价类. 解题思路 第一次写树has ...
- BZOJ.4337.[BJOI2015]树的同构(树哈希)
BZOJ 洛谷 \(Description\) 给定\(n\)棵无根树.对每棵树,输出与它同构的树的最小编号. \(n及每棵树的点数\leq 50\). \(Solution\) 对于一棵无根树,它的 ...
- 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 ...
- P5043 【模板】树同构([BJOI2015]树的同构 // P4323 [JSOI2016]独特的树叶
一.P5043 [模板]树同构([BJOI2015]树的同构): #include<iostream> #include<cstdio> #include<algorit ...
- 【BZOJ - 4337】BJOI2015 树的同构(树哈希)
题干: 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树就成为有根树. 对于两个树T1和T2,如果能够把树T1的 ...
- P5043 【模板】树同构([BJOI2015]树的同构) 树的hash
题意 对于两个树 T1T_1T1 和 T2T_2T2,如果能够把树 T1T_1T1 的所有点重新标号,使得树 T1T_1T1 和树 完 T2T_2T2 全相同,那么这两个树是同构的.给你多棵 ...
- [BJOI2015]树的同构
嘟嘟嘟 判断树的同构的方法就是树上哈希. 如果树是一棵有根树,那么只要从根节点出发dfs,每一个节点的哈希值等于按传统方式算出来的子树的哈希值的结果.需要注意的是,算完子树的哈希值后要先排序再加起来, ...
最新文章
- 忙~~~~~~~~~~~~~~~~~
- 4、Mysql 主从复制报错[ERROR] [MY-013117] 踩坑
- java定义矩形类rect_Java定义矩形类
- 开启企业级市场转型之路 群晖亮出安全“杀手锏”
- [置顶] JQuery在线截取图片
- 定了!特斯拉宣布股东大会和“电池日”活动9月22日举行
- laravel5.5 尝试使用laravel安装器安装(失败) 最后还是用的composer。。。
- InnoDB与UUID
- class反编译软件,超级好用
- 图解深度学习-三种梯度下降法可视化(BGD,SGD,MBGD)
- 免费视频文件生成视频二维码的方式详解
- 般若波罗蜜多心经(观音心经)注解
- Narrow daylight 歌词翻译
- 23种设计模式彩图-设计模式之禅
- 微软服务器登录慢怎么解决,登录微软账户特别慢的原因
- 通过 irp 请求包删除文件
- Javascript 富文本编辑器,单击按钮后内容可编辑区域失去焦点
- Python爬虫之Js逆向案例(2)-某乎搜索
- Delay Penalty for RNN-T and CTC
- Windows Server 2016 搭建 FTP
热门文章
- 【SICP练习】146 练习4.2
- 14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项
- 4*4按键控制屏幕变化
- spssχ2检验_SPSS详细操作:一致性检验和配对卡方检验
- 安装NVIDIA驱动的一些新问题
- c++中[Error] cin was not declared in this scope 是什么意思
- 狂笑!可笑20分钟的段子!
- golang GC相关调试参数
- 人月神话札记:祸起萧墙
- windows设置远程登录-入门篇