Cod sursa(job #1635263)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 6 martie 2016 16:15:15
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <algorithm>
#include <cstdio>
#include <vector>
const int VMAX = 16005;
using namespace std;

int r=-1e9;
int val[VMAX];
vector<int> cox[VMAX];

int dfs(int p, int u){
    int t,tval=val[u];

    for(int i=0; i<cox[u].size(); ++i){
        if(cox[u][i]==p)
            continue;
        t=dfs(u, cox[u][i]);
        if(t>0)
            tval+=t;
    }

    r=max(r,tval);
    return tval;
}

int main(void){
    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);
    int n,x,y;
    scanf("%d",&n);
    for(int i=1; i<=n; ++i)
        scanf("%d",&val[i]);
    for(int i=1; i<n; ++i){
        scanf("%d%d",&x,&y);
        cox[x].push_back(y);
        cox[y].push_back(x);
    }

    dfs(0,1);
    printf("%d",r);
    return 0;
}