第二个点MLE,求助大佬
查看原帖
第二个点MLE,求助大佬
443933
liyixuan5楼主2021/11/2 18:34

本地运行正常......

#include<bits/stdc++.h>
using namespace std;
#define I(e) for(int i=1;i<=e;i++)
struct T{
	int fa;
	int sons;
	int sum;
	int son[6666];
}a[6666];
int dp[6666][2];
int n;
int root;
void dfs(int place){
	if(a[place].sons==0){
		dp[place][1]=a[place].sum;
		return ;
	}
	I(a[place].sons){
		dfs(a[place].son[i]);
	}
	int no=0;
	int mx=0;
	I(a[place].sons){
		int nop=dp[a[place].son[i]][0];
		int yep=dp[a[place].son[i]][1];
		no+=nop;
		mx+=max(nop,yep);
	}
	dp[place][0]=mx;
	dp[place][1]=no+a[place].sum;
	return ;
}
int main(){
	cin>>n;
	root=n*(n+1)/2;
	I(n){
		scanf("%d",&a[i].sum); 
	}
	I(n-1){
		int k,l;
		scanf("%d%d",&l,&k);
		a[l].fa=k;
		a[k].sons++;
		a[k].son[a[k].sons]=l;
		root-=l;
	}
	dfs(root);
	/*I(n){
		cout<<dp[i][0]<<" "<<dp[i][1]<<'\n';
	}*/
	cout<<max(dp[root][1],dp[root][0]);
	return 0;
} 
2021/11/2 18:34
加载中...