Skip to content

洛谷 P2014 · 难度 普及+/提高

题目描述 ​

在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有 N 门功课,每门课有若干学分,分别记作 s1,s2,⋯,sN,每门课有一门或没有直接先修课(若课程 a 是课程 b 的先修课即只有学完了课程 a,才能学习课程 b)。一个学生要从这些课程里选择 M 门课程学习,问他能获得的最大学分是多少?

题目保证课程安排无冲突。(即不会有 a 是 b 的先修课,b 也是 a 的先修课这类情况存在。)

输入格式 ​

第一行有两个整数 N,M 用空格隔开 (1≤N≤300 , 1≤M≤300)。

接下来的 N 行,第 i+1 行包含两个整数 ki 和 si,ki 表示第 i 门课的直接先修课,si 表示第 i 门课的学分。若 ki=0 表示没有直接先修课 (0≤ki≤N,1≤si≤20)。

数据保证至少存在一个 ki=0,即至少一门课无先修课。

输出格式 ​

只有一行,选 M 门课程的最大学分。

样例 ​

样例 1 ​

输入

text
7 4
2 2
0 1
0 4
2 1
7 1
7 6
2 2

输出

text
13