Cod sursa(job #3200503)

Utilizator KarinaDKarina Dumitrescu KarinaD Data 4 februarie 2024 21:07:44
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

const int N = 20000;

vector <int> g[N];
int dp[N], viz[N];

int ans;

void dfs ( int node ) {
    
    viz[node] = 1;
    
    for ( int i = 0; i < g[node].size(); i++ ) {
        if ( viz[g[node][i]] == 0 ) {
            dfs ( g[node][i] );
            dp[node] += max ( 0, dp[g[node][i]] );
        }
    }
    
    ans = max ( ans, dp[node] );
}

int main () {
    
    int n;
    int a, b;
    
    fin >> n;
    
    for ( int i = 1; i <= n; i++ )
        fin >> dp[i];
    
    for ( int i = 1; i < n; i++ ) {
        
        fin >> a >> b;
        
        g[a].push_back (b);
        g[b].push_back (a);
    }
    
    dfs (1);
    
    fout << ans;
    
    return 0;
}