Cod sursa(job #2799296)

Utilizator vansJos da pa perete vans Data 12 noiembrie 2021 19:55:01
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 16000;

int n, dp[NMAX + 1], ans = -2e9;
vector<int> adj[NMAX + 1];

inline void dfs(const int X, const int TATA = 0) {
    for(const auto &el : adj[X]) {
        if(el == TATA) continue;

        dfs(el, X);
        dp[X] += dp[el] * (dp[el] > 0);
    }
    ans = max(ans, dp[X]);
}

int main()
{
    freopen("asmax.in", "r", stdin);
    freopen("asmax.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i) scanf("%d", &dp[i]);
    for(int i = 1; i <= n - 1; ++i) {
        int x, y;
        scanf("%d%d", &x, &y);
        adj[x].push_back(y);
        adj[y].push_back(x);
    }
    dfs(1);
    printf("%d", ans);
    return 0;
}