Cod sursa(job #1168201)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 7 aprilie 2014 13:58:05
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#include <vector>
#define MAXN 16001
using namespace std;

int val[MAXN];
vector <int> G[MAXN];
bool viz[MAXN];

void DFS( int nod ) {
    viz[nod] = true;
    for( int i = 0 ; i < G[nod].size() ; ++i )
        if( !viz[G[nod][i]] ) {
            DFS( G[nod][i] );
            if( val[G[nod][i]] > 0 )
                val[nod] += val[G[nod][i]];
        }
}


int main () {
    FILE *f, *g;
    f = fopen( "asmax.in", "r" );
    g = fopen( "asmax.out", "w" );

    int n, x, y, max;

    fscanf( f, "%d", &n );

    for( int i = 1 ; i <= n ; ++i )
        fscanf( f, "%d", &val[i] );

    for( int i = 1 ; i < n ; ++i ) {
        fscanf( f, "%d%d", &x, &y );
        G[x].push_back( y );
        G[y].push_back( x );
    }

    DFS( 1 );

    max = -2000000000;

    for( int i = 1 ; i <= n ; ++i )
        if( val[i] > max )
            max = val[i];

    fprintf( g, "%d\n", max );

    fclose( f );
    fclose( g );
    return 0;
}