rt,本地可以运行,无error和warning,提交洛谷就CE,求问?
#include<bits/stdc++.h>
using namespace std;
int f[305][305],n,m;
struct EDGE
{
int to,next;
};
EDGE edge[505];
int cnt,head[305],jl[305];
void add(int fr,int to)
{
cnt++;
edge[cnt].to=to;
edge[cnt].next=head[fr];
head[fr]=cnt;
}
dfsa(int a,int fa)
{
for(int i=head[a];i;i=edge[i].next)
{
int b=edge[i].to;
dfsa(b,a);
for(int j=m;j>=0;j--)
{
for(int k=0;k<=j;k++)
{
f[a][j]=max(f[a][j],f[a][j-k]+f[b][k]);
}
}
}
for(int i=m+1;i>=1;i--)
{
f[a][i]=f[a][i-1]+jl[a];
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int fr;
cin>>fr>>jl[i];
add(fr,i);
}
dfsa(0,0);
int ans=-1e9;
for(int i=0;i<=m+1;i++)
{
ans=max(ans,f[0][i]);
}
cout<<ans<<endl;
}