Cod sursa(job #1060039)

Utilizator alex.glontGlontaru Alexandru alex.glont Data 17 decembrie 2013 15:30:30
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<vector>

#define INF -10000000

using namespace std;

fstream in ( "asmax.in" , ios::in ),
        out( "asmax.out", ios::out);

vector <int> copii[16001];
int n, v[16001], a, b, m = INF ;

void dfs( int );

int main(){

    in >> n;

    for( int i=1; i<=n; i++){

        in >> v[i];
    }

    for( int i=1; i<n; i++){

        in >> a >> b;
        copii[a].push_back( b );
    }

    dfs( 1 );

    out << v[1] <<'\n';
    return 0;

}

void dfs( int x ){

    while( !copii[x].empty() ){

        if ( v[ copii[x].back() ] > 0 ){

            if( v[x] >= 0 )
                v[x] += v[ copii[x].back() ];
            else
                v[x] = v[ copii[x].back() ];
        }

        copii[x].pop_back();
    }

}