http://www.lydsy.com/JudgeOnline/problem.php?id=1827 仔细想想就好了,, 每个点维护两个值,一个是子树的费用,一个是除了子树和自己的费用.都可以用dfs做. 维护第一个就是简单的dp.d1[i]=sum{d1[j]+w(i, j)*son1[j]},j是i的子女 第二个就有些麻烦,因为要考虑的不只是这个点的父亲,还要考虑这个点父亲的子树. 那么 d2[i]=d2[fa]+w(fa, i)*son1[i]+d1[fa]-d1[i] 而在处理这些方…