换根dp 一般来说,我们做题的树都是默认 \(1\) 为根的.但是有些题目需要计算以每个节点为根时的内容. 朴素的暴力:以每个点 \(u\) 作为 \(root\) 暴力dfs下去,复杂度\(O(n^2)\): 正确的做法:换根dp,复杂度\(O(n)\). 执行步骤 第一次扫描,先默认 \(root=1\) ,跑一遍 \(dfs\): 第二次扫描,从 \(root=1\) 开始,每次从 \(u\) 到 \(v\) 节点时,计算根从 \(u\) 转移到 \(v\) 时的贡献变化. 很显然,换根d…