这个优化网上好像给的不多,而且有的很难写,现在给一个好写的做法。
基础默认你会 $O(nm^2)$ 解(虽然关系不大)
首先题目里依赖关系成一颗树(有的题是森林,那建一个源点就行)
先把这颗树的子树大小算出来,同时将其拍成一个dfs序。
枚举dfs序上的每个点,如果当前点在原图上不选,向 $f[i+sz[dfn[i]]][j]$ 做贡献(dfs序上子树是连续的,而且当前点不选意味着这个子树都不能选)
如果选,那么向 $f[i+1][j-v[i]] + w[i]$ 转移。
非常好写。