P1113
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int maxn=10010;
int n,m,x,ans;
int a[maxn],b[maxn];
vector<int>linker[maxn];
int dfs(int x)
{
if(b[x])
{
return b[x];
}
for(int i=0;i<linker[x].size();i++)
{
b[x]=max(b[x],dfs(linker[x][i]));
}
b[x]+=a[x];
return b[x];
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>m>>a[i];
while(cin>>x)
{
if(!x)
{
break;
}
else
{
linker[x].push_back(x);
}
}
}
for(int i=1;i<=n;i++)
{
ans=max(ans,dfs(i));
}
cout<<ans;
return 0;
}
无缘无故就MLE了