只有20分,不知道为什么
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
struct Node
{
int sum,child[1500],pri;
}node[N];
int f[N][3];
int n;
int root;
int a[N];
void dp(int x)
{
f[x][1]=node[x].pri ;
f[x][0]=0;
if(node[x].sum==0) return ;
for(int i=1;i<=node[x].sum;i++)
{
int v=node[x].child[i];
dp(v);;
f[x][0]+=f[v][1];
f[x][1]+=min(f[v][0],f[v][1]);
}
}
int main()
{
memset(a,0,sizeof(a));
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int id;
cin>>id;
scanf("%d",&node[id].pri);
scanf("%d",&node[id].sum );
for(int j=1;j<=node[id].sum;j++)
{
scanf("%d",&node[id].child[j]);
a[node[id].child[j]]=1;
}
}
root=1;
while(a[root]) root++;
dp(root);
printf("%d",min(f[root][1],f[root][0]));
return 0;
}