Cod sursa(job #2453879)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 6 septembrie 2019 13:07:42
Problema Asmax Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
using namespace std;

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

long n, t[16384], dp[16384], v[16384], val[16384], maxim = -2000000000;

struct nod{
    long nr;
    nod *next;
};
nod*graf[16384];

void add(int x, int y) {
    nod *p = new nod;
    p->nr = y;
    p->next = graf[x];
    graf[x] = p;
}

void dfs(int x) {
    v[x] = 1;
    dp[x] = val[x];
    for(nod *p = graf[x]; p ;p = p->next)
        if(!v[p->nr]) {
            dfs(p->nr);
            if(dp[p->nr] > 0)
                dp[x] += dp[p->nr];
        }
    if(dp[x] > maxim)
        maxim = dp[x];
}

int main() {
    f >> n;
    for(int i = 1; i <= n; i++)
        f >> val[i];
    for(int i = 1; i < n; i++) {
        int x, y;
        f >> x >> y;
        add(x, y);
        add(y, x);
    }
    dfs(1);
    g << dp[1];
}