Cod sursa(job #3209021)

Utilizator andu9andu nita andu9 Data 1 martie 2024 18:26:14
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <climits>
#include <vector>

std::ifstream fin("asmax.in");
std::ofstream fout("asmax.out");

std::vector<int> val, dp;
std::vector<std::vector<int>> tree;

void DFS (int node, int father) {
    for (int x : tree[node]) {
        if (x != father) {
            DFS (x, node);
            if (dp[x] > 0)
                dp[node] += dp[x];
        }
    }
}

int main () {
    int n; fin >> n;
    val.reserve (n + 1), dp.reserve (n + 1);
    for (int i = 1; i <= n; i += 1)
        fin >> val[i], dp[i] = val[i];
    tree.assign (n + 1, std::vector<int> ());
    for (int i = 0; i < n - 1; i += 1) {
        int x, y; fin >> x >> y;
        tree[x].emplace_back (y);
        tree[y].emplace_back (x);
    }

    DFS (1, 0);

    int Max = INT_MIN;
    for (int i = 1; i <= n; i += 1)
        Max = std::max (Max, dp[i]);
    fout << Max;
    return 0;
}