Cod sursa(job #1258382)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 8 noiembrie 2014 19:48:54
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
#include<vector>
#include<iostream>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");

vector<int> v[16009];
int sol[16009],viz[16009],n,val[16009],maxim = -999999999;

void dfs(int nod)
{
    bool ok = false;
    viz[nod] = 1;
    sol[nod] = val[nod];
    for(int i = 0 ; i < v[nod].size() ; i++)
    {
        if(!viz[v[nod][i]]){
            ok = true;
            dfs(v[nod][i]);
            sol[nod] = max(sol[nod]+sol[v[nod][i]],sol[nod]);
            maxim = max(maxim,sol[nod]);
        }
    }
    if(!ok)
        sol[nod] = val[nod];
}

int main()
{

    in>>n;
    for(int i = 1 ; i <= n ; i++)
        in>>val[i];
    int a,b;
    for(int i = 1 ; i < n ; i++){
        in>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs(1);
    out<<maxim;
    return 0;
}