#4660. 模板. 树形背包
模板. 树形背包
Description
有 个物品,编号分别为 。物品 的重量为 ,价值为 。
给出每个物品依赖于哪个物品。我们用 表示:如果要选取物品 ,就必须先选取物品 。另外,我们用 表示:该物品不依赖于任何物品。保证每个物品最多只依赖一个物品。保证依赖关系合理,不会出现环。
背包最多能装载的重量为 ,请问背包中最多能装入多大价值的物品。
Input
Output
一个整数,表示答案
Samples
7 0
3 4 5 3 0 7 0
1 2 2 1 1 2 2
1 1 2 3 1 1 2
0
7 4
3 4 5 3 0 7 0
1 2 2 1 1 2 2
1 1 2 3 1 1 2
6
10 6
0 1 1 1 2 3 4 5 6 7
1 1 2 2 3 1 2 2 3 1
0 1 1 1 1 1 1 1 1 1
3
13 3
0 1 1 1 3 3 0 0 8 9 10 8 10
1 1 1 1 1 1 1 1 1 1 1 1 1
2 16 32 512 2048 4096 4 1 8 64 1024 128 256
4130
13 25
0 1 1 1 3 3 0 0 8 9 10 8 10
5 6 4 3 7 5 4 7 3 6 5 6 6
0 2 1 2 3 3 3 0 1 2 4 3 2
10
Limitation
.
如果你感觉这里的二维数组很难定义,可以先开一个一维的 int 数组,假设名字为
pool
;等到读入了 , 后再这样声明
int (&dp)[n+1][w+1]=decltype(dp)(pool);
之后就可以写
dp[i][j]
了(其中 )。