Cod sursa(job #2291402)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 27 noiembrie 2018 22:35:37
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <vector>
#define pb push_back
using namespace std ;

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

const int NR = 16005 ;

vector < int > v [ NR ] ;
vector < int > c ( NR ) ;
vector < bool > viz ( NR , false ) ;

int maxim = - ( 1 << 31 ) ;

int dp ( int nod )
{
    viz [ nod ] = true ;
    if ( !v [ nod ].size() )    return max ( 0 , c [ nod ] ) ;
    for ( auto vecin : v [ nod ] )
    if ( !viz [ vecin ] )   c [ nod ] += dp ( vecin ) ;
    if ( c [ nod ] > maxim )    maxim = c [ nod ] ;
    return max ( 0 , c [ nod ] ) ;
}

int main ()
{
    int n ; f >> n ;
    for ( int i = 1 ; i <= n ; ++ i )   f >> c [ i ] ;
    for ( int i = 1 ; i <  n ; ++ i )   { int a , b ; f >> a >> b ; v [ a ].pb(b) ; v [ b ].pb(a) ; }
    dp ( 1 ) ;
    g << maxim << "\n" ;
    f.close() ;
    g.close() ;
    return 0 ;
}