Cod sursa(job #1643539)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 9 martie 2016 19:16:16
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int N = 16005;

int v[N];
int smax = 1 << 31;
vector < int > adj[N];

int dfs(int x, int p) {
    int s = v[x];
    for(auto i : adj[x]) {
        if(i == p) continue;
        int ssub = dfs(i, x);
        if(ssub > 0) s += ssub;
    }
    smax = max(smax, s);
    return s;
}

int main() {
    int n, a, b, i;

    in >> n;
    for(i = 1; i <= n; i++) in >> v[i];
    for(i = 1; i < n; i++) {
        in >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    dfs(1, 0);
    out << smax << '\n';

    return 0;
}