题解:P14464 海底列車(collapse)
为什么 T1 没人过.jpg。
结论是如果两棵树黑白染色后,黑白点度数的可重集对应相同就可以操作成功。
考虑对两棵树同时匹配,首先我们对两棵树都找到一个叶子节点
当进行
这样看起来似乎就做完了,不过我们还需要讨论一个 corner case:
- 如果
a' 在a 的子树,且a' 没有儿子,继续分类讨论:- 如果
a 的子树外存在未匹配的点a'' 满足A(a'')=B(b) 且col_a=col_{a'} ,选择a'' 即可。 - 否则一定存在
p 使得A(p)=1 \wedge col_p \ne col_a 对(fa_{a'},p) 进行操作,然后对(a,p) 进行操作。
- 如果
实现非常简单,每次找到一对未匹配的儿子匹配就行,时间
Bonus:这个题有一个基于二阶毛毛虫代表元的做法,代码我写了 10K,感兴趣的读者可以写着玩玩。