Cod sursa(job #2915850)

Utilizator vlad2009Vlad Tutunaru vlad2009 Data 25 iulie 2022 13:53:44
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>

using namespace std;

const int MAX_N = 16 * 1e3;
vector<int> g[MAX_N + 1];
int a[MAX_N + 1], sum[MAX_N + 1];
int n;

void dfs(int u, int p = -1) {
    sum[u] = a[u];
    for (int v : g[u]) {
        if (v != p) {
            dfs(v, u);
            if (sum[v] >= 0) {
                sum[u] += sum[v];
            }
        }
    }
}

int main() {
    ifstream fin("asmax.in");
    ofstream fout("asmax.out");
    fin >> n;
    for (int i = 1; i <= n; i++) {
        fin >> a[i];
    }
    for (int i = 1; i <= n - 1; i++) {
        int u, v;
        fin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(1);
    int answer = 0;
    for (int i = 1; i <= n; i++) {
        answer = max(answer, sum[i]);
    }
    fout << answer;
    return 0;
}