【BZOJ4337】BJOI2015 树的同构 括号序列
【BZOJ4337】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
题解:题意有问题,题中的树同构是无根树的同构。。。
一开始写了个hash,被卡了,于是学了一发高端的做法。
如果是一棵有根树,那么我们从根开始DFS整棵树,将每个节点的入栈和出栈看成左括号和右括号,最终得到一个括号序列即能代表整棵树。
那么无根树呢?以重心为根即可。如果有两个重心呢?各跑一遍,然后取字典序较小的那个即可。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int n,mn,m,cnt;
int bel[55],siz[55],to[110],next[110],head[55],mx[55];
string f[55],p[55],g[55];
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-') f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+(gc^'0'),gc=getchar();
return ret*f;
}
inline void add(int a,int b)
{
to[cnt]=b,next[cnt]=head[a],head[a]=cnt++;
}
void dfs(int x,int fa)
{
int i,sum=0;
for(i=head[x];i!=-1;i=next[i]) if(to[i]!=fa) dfs(to[i],x);
for(i=head[x];i!=-1;i=next[i]) if(to[i]!=fa) p[++sum]=f[to[i]];
f[x]="(";
sort(p+1,p+sum+1);
for(i=1;i<=sum;i++) f[x]+=p[i];
f[x]+=")";
}
void getrt(int x,int fa)
{
mx[x]=0,siz[x]=1;
for(int i=head[x];i!=-1;i=next[i]) if(to[i]!=fa) getrt(to[i],x),siz[x]+=siz[to[i]],mx[x]=max(mx[x],siz[to[i]]);
mx[x]=max(mx[x],m-siz[x]);
mn=min(mn,mx[x]);
}
string get()
{
string tmp="";
m=rd();
int i,a;
memset(head,-1,sizeof(head)),cnt=0;
for(i=1;i<=m;i++)
{
a=rd();
if(a) add(a,i),add(i,a);
}
mn=1<<30,getrt(1,0);
for(i=1;i<=m;i++) if(mx[i]==mn)
{
dfs(i,0);
tmp=max(tmp,f[i]);
}
return tmp;
}
int main()
{
n=rd();
int i,j;
for(i=1;i<=n;i++) g[i]=get();
for(i=1;i<=n;i++)
{
for(j=1;j<i;j++) if(g[i]==g[j]) break;
printf("%d\n",j);
}
return 0;
}//4 4 0 1 1 2 4 2 0 2 3 4 0 1 1 1 4 0 1 2 3
【BZOJ4337】BJOI2015 树的同构 括号序列的更多相关文章
- bzoj4337: BJOI2015 树的同构 树哈希判同构
题目链接 bzoj4337: BJOI2015 树的同构 题解 树哈希的一种方法 对于每各节点的哈希值为hash[x] = hash[sonk[x]] * p[k]; p为素数表 代码 #includ ...
- [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
4337: BJOI2015 树的同构 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1023 Solved: 436[Submit][Status ...
- BZOJ4337:[BJOI2015]树的同构(树hash)
Description 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树就成为有根树. 对于两个树T1和T2,如 ...
- BZOJ4337: BJOI2015 树的同构(hash 树同构)
题意 题目链接 Sol 树的同构问题,直接拿hash判一下,具体流程大概是这样的: 首先转化为有根树,预处理出第\(i\)棵树以\(j\)为根时的hash值. 那么两个树同构当且仅当把两棵树的hash ...
- bzoj4337: BJOI2015 树的同构
hash大法好 #include <iostream> #include <cstdio> #include <cstring> #include <cmat ...
- BZOJ 4337: BJOI2015 树的同构 树hash
4337: BJOI2015 树的同构 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4337 Description 树是一种很常见的数 ...
- BZOJ4337:[BJOI2015]树的同构——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4337 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根, ...
- 4337: BJOI2015 树的同构
题解: 树的同构的判定 有根树从根开始进行树hash 先把儿子的f进行排序 $f[i]=\sum_{j=1}^{k} { f[j]*prime[j]} +num[i]$(我没有仔细想这样是不是树是唯一 ...
- [BJOI2015]树的同构
嘟嘟嘟 判断树的同构的方法就是树上哈希. 如果树是一棵有根树,那么只要从根节点出发dfs,每一个节点的哈希值等于按传统方式算出来的子树的哈希值的结果.需要注意的是,算完子树的哈希值后要先排序再加起来, ...
随机推荐
- 字符数组在C++、C#等语言中的操作
1.C++中操作数组 #include <iostream> using namespace std; int length(char []); void output_frequency ...
- http://www.casualarena.com/
http://www.casualarena.com/ ———————————————————————————————————————————— 包括祖玛.台球.国际象棋等双人联机小游戏.
- 深入浅出Cache
章节 ① 什么是Cache? Cache的目标? ② Caching住哪些内容? ③ 我们想要的Cache产品 ④ Cache使用方式 ⑤ 对于总体系统的提高 ⑥ 关于Sharding ⑦ Cache ...
- 关于Cocos2d-x中addchild和removeChild方法的参数的解析
一.addchild virtual void addchild( Node * child , int localZOrder , int tag )添加一个子节点到容器中,有Z轴顺序和一个标记. ...
- linux -- Apache执行权限
最近在用php调用exec方法去执行一个linux终端下的命令,结果每次都不能执行成功,网上多番搜寻,最终找到一篇有用的文章,主要原因是因为Apache的执行权限的问题.以下是原文(稍加修改): 利用 ...
- 谷哥的小弟学后台(04)——MySQL(4)
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 具体解释Android主流框架不可或缺的基石 站在源代码的肩膀上全解Scroller工作机制 Android多分辨率适 ...
- python cython 模块(2)
cython 的主要用途是加速python 代码的执行速度,手段有很多种,最简单的一种就是将变量声明成静态类型: 比如用python 代码写的计算素数的函数,最大计算1000个: def primes ...
- 配置OpenGL的开发环境
OpenGL库资源下载 http://pan.baidu.com/s/1ntVsReL 环境搭建 将下载好的文件进行解压,可以得到后缀为.h..lib..dll三类文件,对这三类文件作如下处理: 将所 ...
- c#后台访问接口
直接上代码 后台代码 //接口地址string url = "http://spherefg.topsmoon.com:6666/restapi/Comment/SubmitCommentF ...
- haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)
一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...