Cod sursa(job #2550367)

Utilizator mihneacazCazacu Mihnea mihneacaz Data 18 februarie 2020 19:19:52
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <vector>

using namespace std;

const int NMAX = 16005;

ifstream cin("asmax.in");
ofstream cout("asmax.out");

int cost[NMAX], d[NMAX], ans = -1005;

vector <int> g[NMAX];

void dfs(int node, int father)
{
    int aux = 0;
    for(auto x: g[node]) {
        if(x != father) {
            dfs(x, node);
            aux += max(d[x], 0);
        }
    }
    aux += cost[node];
    d[node] = max(aux, 0);
    ans = max(ans, d[node]);
}

int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; ++i) {
        cin >> cost[i];
        ans = max(ans, cost[i]);
    }
    for(int i = 1; i < n; ++i) {
        int a, b;
        cin >> a >> b;
        g[a].emplace_back(b);
        g[b].emplace_back(a);
    }
    dfs(1, -1);
    cout << ans << "\n";
    return 0;
}