问题2130--背包类树形DP

2130: 背包类树形DP

时间限制: 1 Sec  内存限制: 128 MB
提交: 2  解决: 2
[提交] [状态] [讨论版] [命题人:]

题目描述

在一个地图上有N 座城堡,每座城堡都有一定的宝物。在每次游戏中都允许攻克M 个城堡并获得里面的宝物。但有些城堡不可以直接攻克,要攻克这些城堡,必须先攻克其他某个特定的城堡。计算攻克M 个城堡最多可以获得的宝物数量。

输入

每个测试实例都首先包括两个整数N 和M (1≤M ≤N≤200)。接下来的N 行,每行都包括两个整数a、b 。在第i 行中,a表示要攻克第i 个城堡,则必须先攻克第a 个城堡,若a =0,则表示可以直接攻克第i 个城堡;b (b ≥0)表示第i 个城堡的宝物数量。当N =0、M =0时输入结束。

输出

对每个测试实例,都单行输出攻克M 个城堡最多可以获得的宝物数量。

样例输入 Copy

3 2
0 1
0 2
0 3
7 4
2 2
0 1
0 4
2 1
7 1
7 6
2 2
0 0

样例输出 Copy

5
13

来源/分类