http://acm.hdu.edu.cn/showproblem.php?pid=1561 题意:有n个点,容量为m,每个点有一个价值,还给出n条边,代表选第i个点之前必须先选ai,问最多的价值能取多少. 思路:每个点的花费是1,价值为w[i],然后直接按照树型背包写就行了. 还是老套路. dp[i][j] 表示以 i 为根结点的子树最大价值,然后像01背包一样枚举容量,再用一层循环去给子结点分配容量,最后回溯到根节点,根节点的值就是答案了. 因为是森林,所以添加一个0结点当作根,记得0结点是…