#4720. 树形依赖背包

树形依赖背包

题目描述

给定一棵有根树,树上每个节点对应一件物品,每件物品有占用体积和对应价值。 选取规则:如果要选任意子节点物品,必须先选中它所有祖先(父、祖父直到树根)。 给定背包总容量限制,在总体积不超过背包容量的前提下,选出若干节点,使总价值最大,请输出最大总价值。

输入描述

第一行两个整数 n, c,分别代表树的节点总数、背包最大容量。 接下来一共 n 行,每行三个整数 p v w

  1. p:当前节点的父节点编号;p = -1 代表该节点是整棵树的根;
  2. v:当前节点物品占用的体积;
  3. w:当前节点物品的价值。 所有节点编号范围:0 ~ n-1

输出描述

仅输出一行一个整数,表示背包容量为 c 时可以得到的最大总价值。

输入样例

3 5
-1 2 10
0 2 12
0 1 5

输出样例

27

数据范围

  1. 节点数量:1n1001 \le n \le 100
  2. 背包容量:1c1001 \le c \le 100
  3. 单个物品体积:1v101 \le v \le 10
  4. 单个物品价值:1w501 \le w \le 50
  5. 输入保证恰好只有一个根节点(仅一行输入 p=-1),输入构成一棵合法有根树。