Cod sursa(job #1434408)

Utilizator movo608Moldovan Andrei movo608 Data 10 mai 2015 16:02:13
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <vector>

using namespace std;

static const int MAXN = 16009;
int n, v[MAXN];
vector<int> G[MAXN];
int D[MAXN];

void dfs(int r, int from) {
    D[r] = v[r];
    for(int i = 0, l = G[r].size(); i < l; i++)
        if(G[r][i] != from) {
            dfs(G[r][i], r);
            if(D[G[r][i]] > 0)   D[r] += D[G[r][i]];
        }
}

int main() {
    int a, b;
    ifstream f("asmax.in");
    f >> n;
    for(int i = 1; i <= n; i++) {
        f >> v[i];
    }
    for(int i = 1; i < n; i++) {
        f >> a >> b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
    f.close();
    dfs(1, -1);
    int ans = -10000;
    for(int i = 1; i <= n; i++)
        ans = max(ans, D[i]);
    ofstream g("asmax.out");
    g << ans << endl;
    g.close();
    return 0;
}