就决定是你了!

时间限制: 20000 ms 内存限制: 65536 kb
总通过人数: 0 总提交人数: 1

题目描述

Nova君来到神奇宝贝中心,准备从存储机中挑选若干个Pockmon去挑战最后的四天王和联盟冠军。Nova君现在有N只可挑选的Pockmon,对于第 i 只Pockmon,他的体总为 wi ,战斗力为 vi 。现在联盟规定,只能携带总重量为M的Pockmon进行挑战。那么,Nova君要怎么挑选才能使战斗力最强呢?大家肯定会说,这不是个简单的背包问题嘛?嗯,大概。但是现在有个问题,由于某些Pockmon在冒险的途中,和存储机内的其他Pockmon产生了羁绊,有可能对另一只Pokmon产生依赖,非得被依赖的那只被选中才能发挥战斗力,否则只能是个战斗力为0的卖萌生物而已,好在每只Pockmon都很专情,只会依赖一只(或者不依赖)。

PS:

(1) 依赖关系不对称,即,若A依赖B,B不一定依赖A,俗称beitai;

(2) 可能出现这样的情况:A依赖B,B依赖C,C依赖A,俗称love triangle,当然也有可能是多边形(悲伤脸)

(3) 保证不会出现自己依赖自己的情况

输入

多组测试数据(组数不超过10),对于每组数据,输入4行,第一行是两个正整数N,M,表示Pockmon总数和联盟允许的最大重量,第二行包含N个正整数w1,w2...wn,表示第 i 个Pockmon的重量,第三行包含N个正整数v1,v2...vn,表示第 i 个Pockmon的战斗力,第四行包含N个正整数D1,D2...Dn,表示第 i 个Pockmon依赖的Pockmon的序号,如果没有依赖对象,则 Di=0。

PS:输入数据都在INT范围内,N不超过1000

输出

对于每组数据,输出一行,表示战斗力的最大值

输入样例

3 10
4 5 6
2 3 4
3 1 2
3 10
4 5 6
2 3 4
0 1 1

输出样例

0
6

相关推荐