Cod sursa(job #1258373)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 8 noiembrie 2014 19:44:55
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 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 = -9999999;

void dfs(int nod)
{
    sol[nod] = -9999999;
    viz[nod] = 1;
    cout<<nod<<"\n";
    for(int i = 0 ; i < v[nod].size() ; i++)
    {
        if(!viz[v[nod][i]]){
            dfs(v[nod][i]);
            sol[nod] = max(sol[nod]+sol[v[nod][i]],sol[v[nod][i]] + val[nod]);
            maxim = max(maxim,sol[nod]);
        }
    }
    if(sol[nod] == -9999999)
        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;
}