为什么MLE了?(求调)
查看原帖
为什么MLE了?(求调)
559506
RJSPZ楼主2022/11/30 12:48
#include<bits/stdc++.h>
using namespace std;
int n,m,k,u;
int f[10005][2];
int val[10005];
struct node{
	int leftson,rightson,value;
}tree[10005];
int cnt=0;
int dfs(int u,int k){
	if(f[u][k]){
		return f[u][k];
	}
	for(int i=0;i<k;i++){
		f[u][k]=max(f[u][k],dfs(tree[u].leftson,i)+val[u]+dfs(tree[u].rightson,k-i-1));
	}
	f[u][k]=max(f[u][k],dfs(tree[u].rightson,k));
	return f[u][k];
}
int main(){
	scanf("%d%d",&n,&m);
	int parent,val;
	for(int i=1;i<=n;i++){
		scanf("%d%d",&parent,&val);
		if(tree[i].leftson){
			//右指兄弟   
			tree[i].rightson=tree[parent].leftson;
		}
		tree[parent].leftson=i; 
	}
	dfs(tree[0].leftson,m); 
	printf("%d",f[0][m]);
	return 0;
}
2022/11/30 12:48
加载中...