Cod sursa(job #839060)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 21 decembrie 2012 11:16:12
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
#define pb push_back
using namespace std ;
vector < long > v [ 16007 ] ;
vector < long > :: iterator it ;
long o , n , x , y , max2 , sol [ 16007 ] , sum [ 16007 ] , viz [ 16007 ] ;
void dfs( long u )
{
    viz [ u ] = 1 ;
    sol [ u ] = sum [ u ] ;
    for( it = v [ u ] . begin ( ) ; it != v [ u ] . end ( ) ; ++ it )
        if ( ! viz [ *it ] )
        {
            dfs ( *it ) ;
            sol [ u ] += max ( sol [ *it ] , o ) ;
        }
}
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 ] . push_back ( y ) ;
        v [ y ] . push_back ( x ) ;
    }
    dfs ( 1 ) ;
    for(long i = 1 ; i <= n ; ++ i )
        max2 = max ( max2 , sol [ i ] ) ;
    printf ( "%ld\n" , max2 ) ;
    return 0 ;
}