Cod sursa(job #3214093)

Utilizator AndyGooShooterDurlea Andrei AndyGooShooter Data 13 martie 2024 19:44:30
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;

string __fname = "asmax"; ifstream in (__fname + ".in"); ofstream out (__fname + ".out");
#define cin in
#define cout out

int n;
int val[16001];
vector<int> adj[16001];

int dp[16001];
int ans;

void dfs(int prev, int u){
    dp[u] += val[u];
    for(auto v : adj[u]){
        if(v != prev){
            dfs(u, v);
            if(dp[v] > 0)
                dp[u] += dp[v];
        }
    }
    ans = max(ans, dp[u]);
    cerr << u << ' ' << dp[u] << '\n';
}

int main(){

    cin >> n;
    for(int i = 1; i <= n; i ++){
        cin >> val[i];
    }
    for(int i = 1; i < n; i ++){
        int x, y;
        cin >> x >> y;
        adj[x].push_back(y);
        adj[y].push_back(x);
    }
    dfs(-1, 1);
    cout << ans;

    return 0;
}