Cod sursa(job #2703030)

Utilizator SergiuS3003Sergiu Stancu Nicolae SergiuS3003 Data 6 februarie 2021 19:40:21
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f ( "asmax.in" );
ofstream g ( "asmax.out" );
const int NMAX = 16002;
vector<int>G[NMAX];
int v[NMAX], ans=-1000, dp[NMAX];
bool vis[NMAX];
void DFS ( int x )
{
    vis[x] = 1;
    dp[x] = v[x];

    for ( auto i : G[x] )
        if ( vis[i] == 0 )
        {
            DFS ( i );

            if ( dp[i] > 0 )
                dp[x] += dp[i];
        }

    ans = max ( ans, dp[x] );
}
int main()
{
    int n;
    f >> n;

    for ( int i = 1; i <= n; i++ )
        f >> v[i];

    for ( int i = 1; i < n; i++ )
    {
        int x, y;
        f >> x >> y;
        G[x].push_back ( y );
        G[y].push_back ( x );
    }

    DFS ( 1 );
    g << ans;
    return 0;
}