背景
题意
给定一棵 (n) 个节点的无根树的 (n-1) 条边及 (n) 个点的权值 (val_i) ,求某棵子树的最大权值和。
解法
还是树形 (dp) 模板。
还是没有根的树。
为了方便,不妨设 (1) 号节点为根,则直接从 (1) 号点开始 (dfs) 出所有点的父亲即可。
不妨设 (f_x) 代表以 (x) 节点为根的子树的最大权值和。设边集为 (E) ,则有 (f_x=sum_limits{(x,y) in E} max { f_y,0 }+val_x) ,要求的不是 (f_1) !不是 (f_1) !不是 (f_1) !要求的东西是 (max_limits{i in [1,n]} f_i) !!!
细节
由于有负权值,记得把答案预设为 (-inf) 再更新。