Cod sursa(job #1311064)

Utilizator gedicaAlpaca Gedit gedica Data 7 ianuarie 2015 17:53:56
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

const int NMAX= 16000;

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

vector <int> v[NMAX+1];
bool a[NMAX+1];
int val[NMAX+1], d[NMAX+1], N, x, y, ans= -99999;


void DFS_cresc( int nod )
{
    a[nod]= 1;
    d[nod]= val[nod];
    for ( int i= 0; i<(int)v[nod].size(); ++i )
    {
        if ( a[ v[nod][i] ]==0 )
        {
            DFS_cresc(v[nod][i]);

            if ( d[v[nod][i]]>0 )
            {
                d[nod]+= d[ v[nod][i] ];
            }
        }
    }
}

int main(  )
{
    in >> N;

    for ( int i= 1; i<=N; ++i )
    {
        in >> val[i];
    }

    for ( int i= 1; i<N; ++i )
    {
        in >> x >> y;
        v[x].push_back( y );
        v[y].push_back( x );
    }

    DFS_cresc(1);

    for ( int i= 1; i<=N; ++i )
    {
        if ( d[i]>ans )
        {
            ans= d[i];
        }
    }

    out << ans << '\n';

    return 0;
}