Cod sursa(job #2239073)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 8 septembrie 2018 21:48:22
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");

const int NMAX = 16005;

vector<int> g[NMAX];
int cost[NMAX], dp[NMAX];
bool visited[NMAX];

void dfs(int node) {
    visited[node] = 1;
    dp[node] = cost[node];
    for(auto it : g[node]) {
        if(!visited[it]) {
            dfs(it);
            if(dp[it] > 0)
                dp[node] += dp[it];
        }
    }
}

int main() {
    int n;
    in >> n;
    for(int i = 1; i <= n; i ++)
        in >> cost[i];
    for(int i = 1; i < n; i ++) {
        int x, y;
        in >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    dfs(1);
    int sol = INT_MIN;
    for(int i = 1; i <= n; i ++)
        sol = max(sol, dp[i]);
    out << sol;

    return 0;
}