洛谷p5043 树同构/树哈希
时间:2019-10-31
本文章向大家介绍洛谷p5043 树同构/树哈希,主要包括洛谷p5043 树同构/树哈希使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前置知识:哈希
#include<bits/stdc++.h> using namespace std; int head[100000],ans[1000][1000],cnt,n,m; struct node{ int next,to; }e[1000000]; void add(int from,int to){ e[++cnt].next=head[from]; e[cnt].to=to; head[from]=cnt; } long long hhash(int from,int fa){ long long tot=0,q[10000],ans=0; for(int i=head[from];i;i=e[i].next){ int to=e[i].to; if(to==fa)continue; q[++tot]=hhash(to,from); } sort(q+1,q+1+tot); for(int i=1;i<=tot;i++){ ans=ans*2333+q[i]; } return ans*2333+1001; } int main(){ scanf("%d",&m); for(int i=1;i<=m;i++){ cnt=0; scanf("%d",&n); memset(head,0,sizeof head); for(int j=1;j<=n;j++){ int x; scanf("%d",&x); if(x==0)continue; add(j,x); add(x,j); } for(int j=1;j<=n;j++){ ans[i][j]=hhash(j,0); } sort(ans[i]+1,ans[i]+1+n); for(int j=1,k=0;j<=i;j++){ while(k<=n){ if(ans[i][++k]!=ans[j][k]){ break; } } if(k>n){ printf("%d\n",j); break; } } } }
注意 树同构是无根树 所以要以每个点为根做一次哈希 排序后跟其他树比
原文地址:https://www.cnblogs.com/passione-123456/p/11771905.html
- HBase 写优化之 BulkLoad 实现数据快速入库
- 玩转 Linux 之:由 Nginx log rotation 聊聊 mv 的妙用
- 玩转 SHELL 脚本之:linux date 知多少?
- Hive 中的 LEFT SEMI JOIN 与 JOIN ON 的前世今生
- Yaffs_guts
- 4大分析工具的代码表白术,520花式秀恩爱!
- yaffsfs.c
- yaffs_bitmap
- 原创 | 实战:R环境下Echart的8种可视化
- Yarn(MapReduce 2.0)下分布式缓存(DistributedCache)的注意事项
- Yaffs_guts(三)
- 浅谈 python multiprocessing(多进程)下如何共享变量
- 文件地址映射之yaffs_GetTnode
- bash/shell 解析命令行参数工具:getopts/getopt
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浙大版《C语言程序设计(第3版)》题目集 习题7-5 找鞍点
- 浙大版《C语言程序设计(第3版)》题目集 练习5-1 求m到n之和
- 手把手教你用Python爬取快递100查询你的物流信息
- 浙大版《C语言程序设计(第3版)》题目集 练习5-2 找两个数中最大者
- 浙大版《C语言程序设计(第3版)》题目集 练习5-3 数字金字塔
- 浙大版《C语言程序设计(第3版)》题目集 习题5-1 符号函数
- 浙大版《C语言程序设计(第3版)》题目集 习题5-2 使用函数求奇数和
- 浙大版《C语言程序设计(第3版)》题目集 习题5-3 使用函数计算两点间的距离
- 浙大版《C语言程序设计(第3版)》题目集 习题5-4 使用函数求素数和
- Linux进程之如何查看进程详情?
- 浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数
- 浙大版《C语言程序设计(第3版)》题目集 习题5-6 使用函数输出水仙花数
- 浙大版《C语言程序设计(第3版)》题目集 习题5-7 使用函数求余弦函数的近似值
- 浙大版《C语言程序设计(第3版)》题目集 习题6-1 分类统计字符个数
- 微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!