AGC027F Grafting

题意:给定两棵 个节点的树

你需要对 执行若干次操作,每次操作选择一个叶子节点,删除连接这个叶子的边,并将这个叶子节点连向任意一个另外的点。每个点只能被选择一次

求使得 标号对应相同的最小的操作次数。 或指出无解。

多组数据,,时限


首先查看这两棵树是否已经相同。

若不相同,随便枚举一步操作(共 种可能),假设操作了节点 ,接下来节点 就不能动了,不妨将其看作根。

变成有根树有一个很大的好处 : 每个点都有父亲了。

树中的父亲, 类似。

显然, 点需要操作。

而且,对 点的操作一定是先断开 ,再连上

此时不能再选择 ,所以需要保证 已经处理好。即 的处理时间晚于

此外,在 树上也显然有 的处理时间晚于 ,因为要先把儿子挪走,父亲才有可能称为叶节点。

根据上述约束跑拓扑排序,若无解显然不合法,有解说明合法。

需要操作,才建边

两者都需要操作则连边 。若 需要操作但 不需要,则无解。

复杂度