88pts求调
查看原帖
88pts求调
1287451
N_O_I_P楼主2025/2/7 14:55
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100005];
long long dp[100005];
vector<int> ve[100005];
void dfs(int u,int fa){
	dp[u] = a[u];
    for(int i : ve[u]){
    	if(i == fa) continue;
        dfs(i,u);
        dp[u] += max(dp[i],0ll);
    }
}
signed main(){
    cin >> n;
    for(int i = 1;i <= n;i++) cin >> a[i];
    for(int i = 1;i < n;i++){
    	int u,v; cin >> u >> v;
        ve[u].push_back(v);
        ve[v].push_back(u);
    }
    dfs(1,0);
    long long ans = -1e18;
    for(int i = 1;i <= n;i++) ans = max(ans,dp[i]);
    cout << ans;
    return 0;
}
2025/2/7 14:55
加载中...