代码过了,但求大佬解释为什么dfs里的k循环k初值为0会错
查看原帖
代码过了,但求大佬解释为什么dfs里的k循环k初值为0会错
322705
Mr_Ender楼主2020/8/27 09:34
#include<bits/stdc++.h>
using namespace std;
int n,m,father,s[405],f[405][405];
vector <int> e[405];
void dfs(int u){
	for(int j=0;j<=m;j++){
		f[u][j]=s[u];
	}
	for(int v=0;v<e[u].size();v++){
		dfs(e[u][v]);
		for(int j=m;j>=1;j--){
			for(int k=1;k<j;k++){
				f[u][j]=max(f[u][j],f[u][j-k]+f[e[u][v]][k]);
			}
		}
	} 
}
int main(){
	cin>>n>>m;
	m++;
	for(int i=1;i<=n;i++){
		cin>>father>>s[i];
		e[father].push_back(i);
	}
	dfs(0);
	cout<<f[0][m];
	return 0;
} 
2020/8/27 09:34
加载中...