莫名其妙#2MLE,求助!
查看原帖
莫名其妙#2MLE,求助!
912779
isme1楼主2024/7/30 10:32
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,r[6010],num[6010],cnt,head[6010],s,dp[6010][2],ans;
struct su{
	int nxt,to;
};
su edge[6010];
void add(int u,int v){
	edge[++cnt].nxt=head[u];
	edge[cnt].to=v;
	head[u]=cnt;
}
void dfs(int u,int fa){
	dp[u][1]=r[u];
	for(int i=head[u];i;i=edge[i].nxt){
		int v=edge[i].to;
		if(v==fa){
			continue;
		}
		dfs(v,u);
		dp[u][0]=max(dp[v][1],dp[v][0]);
		dp[u][1]+=dp[v][0];
	}
	return;
}
signed main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>r[i];
	}
	for(int i=1;i<=n-1;i++){
		int u,v;
		cin>>u>>v;
		add(u,v);
		add(v,u);
		num[u]++;
	}
	for(int i=1;i<=n;i++){
		if(num[i]==0){
			s=i;
			break;
		}
	}
	dfs(s,0);
	for(int i=1;i<=n;i++){
		ans=max(ans,max(dp[i][0],dp[i][1]));
	}
	cout<<ans;
	return 0;
}


2024/7/30 10:32
加载中...