Cod sursa(job #2385400)

Utilizator blasterzMircea Dima blasterz Data 21 martie 2019 21:35:03
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <vector>

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]) {
        	// observa ca apelez mai intai recursiv ca sa stiu ca am S[v] calculat
            dfs(v);
            if (S[v] > 0)
                S[u] += S[v]; // folosesc direct vectorul S 
        }
}


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 = 0;
    for (int i = 1; i <= n; ++i)
        result = max(result, S[i]);
    cout << result << endl;

}