[BalticOI 2016 Day2] 交换

发现一个点在操作其子树之前,它上面的值只有可能是其祖先或者其祖先的兄弟的值,这样我们可以直接设 \(f_{i,j}\) 表示 \(i\) 点的值为 \(j\) 的最小字符串,转移次数和状态数都是 \(O(n\log n)\)

然后涉及到字符串拼接和比较,由于二叉树性质可知其复杂度为 \(O(n\log^2 n)\)