我们先把两棵树的所有节点的儿子排序,然后dfs,记录访问的深度序列

然后可以发现题目中的两个操作都只会在深度序列中删掉一位,不会对其他位有影响(自己画画图就知道了)

对于一个深度序列$d_{1\cdots n}$,如果对任意$1\leq i\lt n$满足$d_i+1\geq d_{i+1}$,那么我们可以把这棵树的形态还原出来(直接模拟dfs的过程即可)

对于这道题,求出两棵树的深度序列之后,它们的LCS一定满足以上条件(如果有$d_i+1\lt d_{i+1}$,那么显然这两位中间还有点,也就是说这不是LCS),而注意到我们在原深度序列中删点可以得到这个LCS,所以LCS就是最终两棵树变到同一棵树时的深度序列

#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
vectorson1[5010],son2[5010];
int d1[5010],d2[5010],f[5010][5010],M;
void dfs(int x,int d,vector*son,int*p){
	M++;
	p[M]=d;
	for(int v:son[x])dfs(v,d+1,son,p);
}
int main(){
	int n1,n2,i,j;
	scanf("%d",&n1);
	for(i=2;i<=n1;i++){
		scanf("%d",&j);
		son1[j].push_back(i);
	}
	for(i=1;i<=n1;i++)sort(son1[i].begin(),son1[i].end());
	scanf("%d",&n2);
	for(i=2;i<=n2;i++){
		scanf("%d",&j);
		son2[j].push_back(i);
	}
	for(i=1;i<=n2;i++)sort(son2[i].begin(),son2[i].end());
	M=0;
	dfs(1,1,son1,d1);
	M=0;
	dfs(1,1,son2,d2);
	for(i=1;i<=n1;i++){
		for(j=1;j<=n2;j++){
			if(d1[i]==d2[j])
				f[i][j]=f[i-1][j-1]+1;
			else
				f[i][j]=max(f[i][j-1],f[i-1][j]);
		}
	}
	printf("%d",n1+n2-(f[n1][n2]<<1));
}

[Contest20180328]同构的更多相关文章

  1. [LeetCode] Isomorphic Strings 同构字符串

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  2. 60阶单群同构于A5的证明

    设$G$是$60$阶的单群,我们来证明他同构于$A_5$,一个比较直观地思路是考虑群表示$\phi:G\to S(\Sigma)$,由同态基本定理得到$$G/{\rm Ker}\phi \simeq ...

  3. 03-树1 树的同构 (C语言链表实现)

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h& ...

  4. PAT 03-树1 树的同构 (25分)

    给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A.B.G的左右孩子互换后 ...

  5. React同构直出原理浅析

    通常,当客户端请求一个包含React组件页面的时候,服务端首先响应输出这个页面,客户端和服务端有了第一次交互.然后,如果加载组件的过程需要向服务端发出Ajax请求等,客户端和服务端又进行了一次交互,这 ...

  6. BZOJ 4337: BJOI2015 树的同构 树hash

    4337: BJOI2015 树的同构 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4337 Description 树是一种很常见的数 ...

  7. SDUT 3340 数据结构实验之二叉树一:树的同构

    数据结构实验之二叉树一:树的同构 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 给定两棵树 ...

  8. react服务端/客户端,同构代码心得

    FKP-REST是一套全栈javascript框架   react服务端/客户端,同构代码心得 作者:webkixi react服务端/客户端,同构代码心得 服务端,客户端同构一套代码,大前端的梦想, ...

  9. [转] React同构思想

    React比较吸引我的地方在于其客户端-服务端同构特性,服务端-客户端可复用组件,本文来简单介绍下这一架构思想. 出于篇幅原因,本文不会介绍React基础,所以,如果你还不清楚React的state/ ...

随机推荐

  1. CSS3不遥远,几个特性你要知道

    CSS是众所周知且应用广泛的网站样式语言,在它的版本三(CSS3)计划中,新增了一些能够节省时间的特性.尽管只有当前最新了浏览器版本才能支持这些 效果,但了解它们还是必须且很有趣味性的.CSS3中的5 ...

  2. cookie中的path与domain属性详解

    1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net.而跨域访问,如域A为t1 ...

  3. 原生toolbar基本使用教程

    1.先写布局文件 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" app:title=" ...

  4. 安卓titlebar的组合控件使用

    http://blog.csdn.net/itachi85/article/details/51435187

  5. namesilo注册域名用来做域名邮箱

    重要的话说三遍: (一定不要再国内注册域名,不要买国内的空间) (一定不要再国内注册域名,不要买国内的空间) (一定不要再国内注册域名,不要买国内的空间) 使用的是腾讯企业邮箱,有一个缺点:不支持自定 ...

  6. bzoj 1517 [POI2006]Met 贪心

    [POI2006]Met Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 203  Solved: 108[Submit][Status][Discus ...

  7. jrebel插件激活

    不管用的哪个工具都可以通过下面的教程获取注册码,激活你的开发工具 原文出自:http://www.gezila.com/tutorials/11476.html 首先打开Myeclipse,点击“he ...

  8. .NET的PE文件结构篇(转)

    一.开篇 开篇我要讲述一个关于PE文件结构的文章,这篇文章动手能力比较强,希望大家能够动手进行操作,这边文章篇幅有可能会长一些,为了方便大家阅读我可以将其分为几个部分进行讲解,主要分为以下几个部分: ...

  9. Spring 学习笔记(二)

      一.Spring 中的bean配置 –配置形式:基于 XML 文件的方式:基于注解的方式 –Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).Fac ...

  10. [bzoj1823][JSOI2010]满汉全席——2-SAT

    题目大意 题目又丑又长我就不贴了,说一下大意,有n种菜,m个评委,每一个评委又有两种喜好,每种菜有满汉两种做法,只能选一种.判断是否存在一种方案使得所有评委至少喜欢一种菜品.输入包含多组数据. 题解 ...