@[jager_8](/user/875454)
把输入输出都改成scanf和printf
by fanghongxi123456 @ 2024-04-25 18:02:13
@[jager_8](/user/875454)
这样:
```
#include<bits/stdc++.h>
using namespace std;
long long e[305][305],k[305],f[305][309];
int n,m;
void dfs(int u)
{
for(int i=1;i<=e[u][0];i++)
{
int v=e[u][i];
dfs(v);
for(int l=m;l>0;l--)
{
for(int j=1;j<=m;j++)
{
if(f[u][l]&&f[v][j])
f[u][l+j]=max(f[u][l+j],f[v][j]+f[u][l]);
if(u==0)
{
f[u][l+j]=max(f[u][l+j],f[v][j]+f[u][l]);
}
}
}
}
}
void check()
{
for(int i=0;i<=n;i++)
{
printf("%d",i);
cout<<":";
for(int j=1;j<=m;j++)
{
printf("%d",f[i][j]);
cout<<" ";
}
printf("\n";)
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
int s;
scanf("%d%d",&s,&k[i]);
e[s][++e[s][0]]=i;
f[i][1]=k[i];
}
m++;
dfs(0);
printf("%d",f[0][m]);
return 0;
}
```
应该可以
by fanghongxi123456 @ 2024-04-25 18:07:45
@[jager_8](/user/875454)
别试了,我试过了
by fanghongxi123456 @ 2024-04-25 18:09:40
@[fanghongxi123456](/user/1155991) 不对我是wa,况且这题O(n^3)也超不了
by jager_8 @ 2024-04-26 12:52:27
已经解决了 @[fanghongxi123456](/user/1155991)
by jager_8 @ 2024-04-26 13:56:11
@[fanghongxi123456](/user/1155991) 是数组不够大的原因,要开到2*m
by jager_8 @ 2024-04-26 13:59:48
@[jager_8](/user/875454)
请原谅我,一看到有问题的代码第一想到的就是scanf和peintf......
by fanghongxi123456 @ 2024-04-26 17:48:34
@[fanghongxi123456](/user/1155991) 没事的bro,感谢你的热情
by jager_8 @ 2024-04-28 12:36:50