玄关

灌水区

@[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


|