先找出树上以 S S S 为起点最长的一条链,然后让其他链的长度都和该链对齐即可。
维护每个结点 x x x 的子树最长链 d max ( x ) d_{\max}(x) dmax(x),则每次 DFS 求出最长链之后调整对齐的代价为 d max ( x ) − ( d max ( s o n x ) + w i ) d_{\max}(x)-(d_{\max}(son_x)+w_i) dmax(x)
先找出树上以 S S S 为起点最长的一条链,然后让其他链的长度都和该链对齐即可。
维护每个结点 x x x 的子树最长链 d max ( x ) d_{\max}(x) dmax(x),则每次 DFS 求出最长链之后调整对齐的代价为 d max ( x ) − ( d max ( s o n x ) + w i ) d_{\max}(x)-(d_{\max}(son_x)+w_i) dmax(x)