Cod sursa(job #2871371)

Utilizator Ionut10Floristean Ioan Ionut10 Data 14 martie 2022 15:58:58
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
#define NMax 16000

using namespace std;

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

int n;
int v[NMax + 1];
int dp[NMax + 1];
int a, b;
int smax;
vector<int> adj[NMax + 1];

void dfs ( int x, int p )
{
    int s = 0;
    for ( auto u: adj[x] )
    {
        if ( u != p )
        {
            dfs(u, x);
            if ( dp[u] > 0 ) s += dp[u];
        }
    }
    dp[x] += s;
}

int main()
{
    fin >> n;
    for ( int i = 1; i <= n; i++ )
    {
        fin >> v[i];
        dp[i] = v[i];
    }
    for ( int i = 1; i < n; i++ )
    {
        fin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    dfs(1, 0);
    smax = -1e9;
    for ( int i = 1; i <= n; i++ )
        smax = max(smax, dp[i]);
    fout << smax;
    return 0;
}