Cod sursa(job #2503686)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 3 decembrie 2019 17:55:36
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <vector>
#include <cstring>

#define N 16000 + 1

using namespace std;

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

vector < int > graph[N];
bool viz[N];
int val[N], d[N];

void dfs ( int node ){
    viz[node] = 1;
    d[node] = val[node];
    for ( int i = 0; i < graph[node].size(); i++ ){
        int new_node = graph[node][i];
        if ( viz[new_node] == 0 ){
            dfs ( new_node );
            d[node] = max ( d[node], d[node] + d[new_node] );
        }
    }
}

int main()
{   int n, i, x, y, Max = -1001;
    f >> n;
    for ( i = 1; i <= n; i++ )
        f >> val[i];
    for ( i = 1; i <= n - 1; i++ ){
        f >> x >> y;
        graph[x].push_back ( y );
        graph[y].push_back ( x );
    }
    dfs ( 1 );
    for ( i = 1; i <= n; i++ )
        Max = max ( Max, d[i] );
    g << Max;
    return 0;
}