DeerInZooDivOne

作者:叶珈宁

关键词:DP 树同构 二分图最大权匹配 KM算法

题目简述

给定一棵n个节点的树,要求找出两个最大的没有公共点的同构连通块。求这两个连通块的大小。

两个连通块A,B同构是指存在一组A的点编号集合到B的点编号集合的双射p,使得如果A中的点u,v之间有一条边,那么B中的点p(u),p(v)之间也有一条边。

n51.

算法

假设现在有两棵有根树T1,T2u,v分别是T1,T2的根,设f(u,v)表示最大的同构连通块大小使得u,v是这两个连通块中的对应点(即p(u)=v)。那么如何才能求得f(u,v)

son(x)表示x的儿子集合,那么如果对所有ason(u),bson(v)都求出了f(a,b),就可以构造一个二分图,左边的点集是son(u),右边的点集是son(v)a,b之间的边权是f(a,b),则f(u,v)就是这个二分图的最大权匹配+1。

那么回到原问题,把树变成有根树,对于答案的两个连通块,至少有一个连通块的根的子树里没有另一个连通块的点。枚举这个点作为u,把uu父亲之间的边断开,再枚举它父亲所在的连通块内的一个点作为v,计算f(u,v)即可。

状态数是O(n3)的,KM转移的复杂度是O(n3)的,所以总复杂度是O(n6)的。

results matching ""

    No results matching ""