Cod sursa(job #3361882)

Utilizator RegeleOu3433Calin V. Dragos Andrei RegeleOu3433 Data 29 iulie 2026 12:40:27
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 16e3 , VMAX = 1e3; // ghicesc, fiindca nu zice limita nicaieri
int v[MAXN + 1] , maxs[MAXN + 1];
vector < int > vec[MAXN + 1];
bitset < MAXN + 1 > vzn;
void dfs ( int nod ) {
    int i , vnod;

    vzn[nod] = 1;
    maxs[nod] = v[nod];
    for ( i = 0 ; i < vec[nod].size () ; i++ ) {
        vnod = vec[nod][i];
        if ( vzn[vnod] == 0 ) {
            dfs ( vnod );
            maxs[nod] = maxs[nod] + max ( 0 , maxs[vnod] );
        }
    }
}
int main () {
    ifstream cin ( "asmax.in" );
    ofstream cout ( "asmax.out" );
    int n , i , maxt , a , b;

    cin >> n;
    for ( i = 1 ; i <= n ; i++ )
        cin >> v[i];
    for ( i = 1 ; i < n ; i++ ) {
        cin >> a >> b;
        vec[a].push_back ( b );
        vec[b].push_back ( a );
    }
    dfs ( 1 );
    maxt = -VMAX;
    for ( i = 1 ; i <= n ; i++ )
        maxt = max ( maxt , maxs[i] );
    cout << maxt << '\n';

    return 0;
}