Cod sursa(job #839070)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 21 decembrie 2012 11:36:25
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
#define pb push_back
using namespace std ;
vector < long > v [ 16007 ] ;
long n , x , y , max2 = - 10000000 , sol [ 16007 ] , sum [ 16007 ] ;
bool viz [ 16007 ] ;
void dfs ( long u )
{
    viz [ u ] = 1 ;
    sol [ u ] = sum [ u ] ;
    for( vector < long > :: iterator it = v [ u ] . begin ( ) ;it != v [ u ] . end ( ) ; ++ it )
        if ( ! viz[ * it ] )
        {
            dfs ( * it ) ;
            sol [ u ] += max ( ( long ) 0 ,sol [ * it ] ) ;
            max2 = max ( max2 , sol [ u ] ) ;
        }
}
int main()
{
    freopen ( "asmax.in" , "r" , stdin ) ;
    freopen ( "asmax.out" , "w" , stdout ) ;
    scanf ( "%ld" , & n ) ;
    for( long i = 1 ; i <= n ; ++ i )
        scanf ( "%ld" , & sum [ i ] ) ;
    for( long i = 1 ; i <= n - 1 ; ++ i )
    {
        scanf ( "%ld%ld" , & x , & y ) ;
        v [ x ] . pb ( y ) ;
        v [ y ] . pb ( x ) ;
    }
    dfs ( 1 ) ;
    printf ( "%ld\n" , max2 ) ;
    return 0 ;
}