#include<bits/stdc++.h>
using namespace std;
vector<int>g[20010];
int vis[20010],n,l[20010];
int ans=0;
int dfs(int pos,int cost){
for(int i=0;i<g[pos].size();i++){
int t=g[pos][i];
if(cost+l[t]>vis[t]){
vis[t]=cost+l[t];
dfs(t,cost+l[t]);
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int ts;
cin>>ts;
cin>>l[ts];
int t=-1;
while(1){
cin>>t;
if(t==0)break;
g[t].push_back(ts);
}
}
dfs(1,l[1]);
for(int i=1;i<=n;i++)ans=max(ans,vis[i]);
cout<<ans;
return 0;
}
改了好多次,还是全RE,请大佬赐教