帅气的大老们!!同志们!!90分,求改
查看原帖
帅气的大老们!!同志们!!90分,求改
776751
W0718楼主2024/7/27 15:15
#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int maxn=16000+111;
int n,a[2*maxn];
int dp[2*maxn];
bool vis[2*maxn];
vector<int> vt[2*maxn];
void dfs(int u)
{
	vis[u]=true;
	dp[u]=a[u];
	for(int i=0;i<vt[u].size();i++)
	{
		int v=vt[u][i];
		if(!vis[v])
		{
			dfs(v);
			if(dp[v]>0)dp[u]+=dp[v];
		}
	}
}
signed main()
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
	for(int i=1;i<=n-1;i++)
	{
		int du,dv;scanf("%lld %lld",&du,&dv);
		vt[du].push_back(dv);
		vt[dv].push_back(du);
	}
	dfs(1);
	int ans_MAX_PRO_PLUS=0;
	for(int i=1;i<=n;i++)
	{
		if(dp[i]>ans_MAX_PRO_PLUS)ans_MAX_PRO_PLUS=dp[i];
	}
	cout<<ans_MAX_PRO_PLUS;
	return 0;
}
2024/7/27 15:15
加载中...