在这个题目中,我们的依赖任务都是小于 k 的,所以我们可以用到 dp 来记录
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
int n;
const int N = (int)1e4+5;
int dp[N];
int main(){
cin >> n;
int ans = 0;
for(int i=1;i<=n;i++){
int u,len;
cin >> u >> len;
int v;
cin >> v;
int best = 0; // 最优节点的编号
int num = 0;
while(v){
// 对于每一个之前的节点
//我们都要考虑要选择一个最好的
if(dp[v]>num){
best = v , num = dp[v];
}
cin >> v;
}
dp[i] = dp[best] + len;
ans = max(ans,dp[i]);
}
cout << ans;
return 0;
}