“超级无敌神仙炫酷无敌原神大王”豪华套餐堂堂复活。
首先树剖,考虑维护轻儿子的贡献,之后在重链上直接查。记 $f_u$ 为 $u$ 的子树中到 $u$ 的最大答案,$g_u$ 为 $u$ 的所有轻儿子中 $f_v$ 的最大值,$dis_u$ 为 $u$ 到根的距离。
询问时,在重链中往下走就维护 $g_u+dis_u$,往上走就维护 $g_u-dis_{fa_u}$,重链之间就用 $g_u$ 转移。
修改时,用类似询问的方法维护重链顶的 $f_u$,再更新 $g_{fa_u}$。考虑对每个点开一个 set 维护 $g_u$ 即可。
时间复杂度 $O(n\log^2 n)$,巨大难写。