【题解】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)\) 的。
浙公网安备 33010602011771号