Cod sursa(job #2385418)

Utilizator blasterzMircea Dima blasterz Data 21 martie 2019 21:38:52
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <vector>
#include <climits>

using namespace std;
#define N 16001

bool use[N];
int S[N];
vector<int> a[N];
int n;

void dfs(int u) {
    use[u] = true;
    for (auto v : a[u]) {
        if (!use[v]) {
            dfs(v);
            if (S[v] > 0) {
                S[u] += S[v];
            }
        }
    }
}


int main() {
    freopen("asmax.in", "r", stdin);
    freopen("asmax.out", "w", stdout);
    cin >> n;
    for (int i = 1; i <= n; ++i)
        cin >> S[i];
    
    int p, q;
    for (int i = 1; i < n; ++i) {
        cin >> p >> q;
        a[p].push_back(q);
        a[q].push_back(p);
    }

    dfs(1);

    int result = INT_MIN;
    for (int i = 1; i <= n; ++i)
        result = max(result, S[i]);
    cout << result << endl;

}