Cod sursa(job #2673524)

Utilizator ElektrykT E S L A P E F E L I E Elektryk Data 17 noiembrie 2020 09:36:11
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <vector>

using namespace std;

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

void dfs ( int nod );

int n;

vector < int > g[16007];

int val[16137];

int dp[16137];

int viz[16137];

int mx = -1e9;

int x, y;

int main()
{
    in >> n;
    for ( int i = 1 ; i <= n ; ++i )
        in >> val[i];
    for ( int i = 1 ; i < n ; ++i )
    {
        in >> x >> y;
        g[x].push_back (y);
    }
    for ( int i = 1 ; i <= n ; ++i )
        if ( !viz[i] )
            dfs (i);
    for ( int i = 1 ; i <= n ; ++i )
        mx = max ( mx, dp[i] );
    out << mx;
    return 0;
}

void dfs ( int nod )
{
    viz[nod] = true;
    dp[nod] = val[nod];
    for ( auto i : g[nod] )
        if ( !viz[i] )
            dfs (i);
    for ( auto i : g[nod] )
        if ( dp[nod] + dp[i] > dp[nod] )
            dp[nod] += dp[i];
}