hdu1561 The more, The Better

The more, The Better

Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1230    Accepted Submission(s): 622

Problem Description

ACboy 很喜欢玩一种战略游戏,在一个地图上,有 N 座城堡,每座城堡都有一定的宝物,在每次游戏中 ACboy 允许攻克 M 个城堡并获得里面的宝物。但由于地理位置原 因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮 ACboy 算出要获得尽量多的宝物应该攻克哪 M 个城堡吗?

Input

每 个测试实例首先包括2 个整数, N,M.(1 <= M <= N <= 200); 在接下来的 N 行里,每行包括 2 个整数, a,b.  在第  行, 代表要攻克第  个城堡必须先攻克第  个城堡,如果  a = 0  则代表可以直接攻克第  个城堡。 代表第  个城堡的宝物数量 , b >= 0 。当 N = 0, M = 0 输入结束。

Output

对于每个测试实例,输出一个整数,代表ACboy 攻克 M 个城堡所获得的最多宝物的数量。

Sample Input

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

Sample Output

13

Author

8600

Source

HDU 2006-12 Programming Contest

Recommend

LL

 

我真想说一句……树形DP ,你是我大爷!!!

表示这题比较简单,写了个超级难看的类似背包的玩意过去的……

dp[i][j]表示节点 i 花了 j 步在以 i 为根节点的子树中取的宝物的最大值。

所以就跟背包一样直接搞了……

代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值