DP基础题,只要不把他想得复杂化都能做出来。
#include<iostream>
using namespace std;const int N=10005;
int n;
int cost[N];
int d[N];
int main()
{
scanf("%d",&n);
int tmp;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&d[i],&tmp);
int max=0,t;
for(int i=1;i<=tmp;i++)
{
scanf("%d",&t);
if(d[t]>max)
max=d[t];
}
d[i]+=max;
}
int ans=0;
for(int i=1;i<=n;i++)
if(ans<d[i])
ans=d[i];
printf("%d\n",ans);
return 0;
}