博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ3602:Count the Trees
阅读量:5242 次
发布时间:2019-06-14

本文共 1070 字,大约阅读时间需要 3 分钟。

本来是挺容易的树同构题,可是节点数比较多,愣是把普通hash卡掉了(出题人麻烦您过来一下)

只能用map映射一下,给每个状态一个标号,而状态的表示是它两个儿子的标号。

 

#include#include
#include
#include
#define MN 110001#define ll long long#define fi first#define se secondusing namespace std;int read_p,read_ca,read_f;inline int read(){ read_p=0;read_ca=getchar();read_f=1; while(read_ca<'0'||read_ca>'9') read_f=read_ca=='-'?-1:read_f,read_ca=getchar(); while(read_ca>='0'&&read_ca<='9') read_p=read_p*10+read_ca-48,read_ca=getchar(); return read_p*read_f;}const int HA=1e6+7;int T,n,m,ha[MN],a,b,L[MN],R[MN],nm=0,mmh[2][MN];ll MMH;map
,int>mp;int dfs(int x,int mmh[]){ int MMH; pair
now=make_pair(L[x]==-1?0:dfs(L[x],mmh),R[x]==-1?0:dfs(R[x],mmh)); if (mp.find(now)==mp.end()) MMH=mp[now]=++nm;else MMH=mp[now]; mmh[MMH]++; return MMH;}inline void work(int n,int mmh[]){ for (int i=1;i<=n;i++) L[i]=read(),R[i]=read(); dfs(1,mmh);}int main(){ T=read(); for (int i=0;i
C++ 190 8608

 

转载于:https://www.cnblogs.com/Enceladus/p/6702603.html

你可能感兴趣的文章
php学习笔记
查看>>
普通求素数和线性筛素数
查看>>
React Router 4.0 基本使用
查看>>
PHP截取中英文混合字符
查看>>
【洛谷P1816 忠诚】线段树
查看>>
CDN 学习笔记
查看>>
电子眼抓拍大解密
查看>>
poj 1331 Multiply
查看>>
严重: 文档无效: 找不到语法。 at (null:2:19)
查看>>
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
nodejs-Path模块
查看>>
P1107 最大整数
查看>>
监控CPU和内存的使用
查看>>
Ubuntu14.04设置开机自启动程序
查看>>
强连通tarjan模版
查看>>
多进程与多线程的区别
查看>>
Ubuntu(虚拟机)下安装Qt5.5.1
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
个人寒假作业项目《印象笔记》第一天
查看>>