【题解】P4672 [BalticOI 2011] Tree Mirroring (Day2)

https://www.luogu.com.cn/problem/P4672

考虑找到 \(T_1\)\(T_2\) 中对应的两个点 \(u_1,u_2\),那么就可以通过 bfs 划分每条边属于哪棵树,接着跑树哈希判定是否相同。注意每个叶子其实是有区别的,所以叶子要给他赋随机权。

先判掉一些 corner case:

  • \(T\) 是链,这对应给出的图是奇数个点的链,或者是偶数个点的环。

现在考虑一定存在一个极小的环,其中只包含两个 \(\deg>2\) 的点,他们就是 \(u_1,u_2\)
那么可以通过广义串并联图方法,缩二度点的时候发现存在重边,那么这条边的两个端点就是 \(u_1,u_2\)

可以做到 \(O(n)\) 复杂度,代码实现是 \(O(n\log n)\) 的。

posted @ 2026-07-08 08:44  TallBanana  阅读(10)  评论(0)    收藏  举报