Cod sursa(job #2653260)

Utilizator JackstilAdascalitei Alexandru Jackstil Data 27 septembrie 2020 15:01:48
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define nmax 16001

using namespace std;

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

int n, v, a, b, sume[nmax], sumamax;
vector<int> graf[nmax];
bool vizitat[nmax];

int solve(int x) {
    vizitat[x] = true;

    for (auto i : graf[x])
        if (!vizitat[i])
            sume[x] += solve(i);

    if (sume[x] < 0)
        return 0;
    else
        return sume[x];
}

int main() {
    in >> n;
    for (int i = 1; i <= n; ++i) {
        in >> v;
        sume[i] += v;
    }

    for (int i = 1; i < n; ++i) {
        in >> a >> b;

        graf[a].push_back(b);
        graf[b].push_back(a);
    }

    solve(1);

    sumamax = sume[1];

    for (int i = 2; i <= n; ++i)
        sumamax = max(sumamax, sume[i]);

    out << sumamax;
    return 0;
}