Cod sursa(job #3370835)

Utilizator G_b_yZamfirache Gabriel G_b_y Data 27 octombrie 2026 14:14:39
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 16005;
vector<int> vec[NMAX];
int cost[NMAX], ans = 0;
bool viz[NMAX];

int dfs (int x) {
    int ret = cost[x];
    viz[x] = true;
    vector<int> paths;
    for (auto y : vec[x]) {
        if (!viz[y]) {
            int rety = dfs(y);
            if (rety > 0) {
                ret += rety;
            }
        }
    }
    ans = max(ans, ret);
    return ret;
}

int main () {
    int n;
    in >> n;
    for (int i = 1; i <= n; ++i) {
        in >> cost[i];
    }
    for (int i = 1; i < n; ++i) {
        int a, b;
        in >> a >> b;
        vec[a].push_back(b);
        vec[b].push_back(a);
    }
    for (int i = 1; i <= n; ++i) {
        ans += cost[i];
    }
    dfs(1);
    out << ans;
    return 0;
}