Cod sursa(job #3342498)

Utilizator BuzdiBuzdugan Rares Andrei Buzdi Data 24 februarie 2026 15:09:47
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 16'000;

int n;
int a[NMAX + 1];
int dp[NMAX + 1];
vector<int> g[NMAX + 1];

void DFS(int node, int dad = 0) {
    dp[node] = a[node];
    for(int next_node : g[node]) {
        if(next_node != dad) {
            DFS(next_node, node);
            dp[node] = max(dp[node], dp[node] + dp[next_node]);
        }
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    fin >> n;
    for(int i = 1; i <= n; i++) {
        fin >> a[i];
    }

    for(int i = 1; i <= n - 1; i++) {
        int a, b;
        fin >> a >> b;
        g[a].push_back(b);
        g[b].push_back(a);
    }
    DFS(1);
    fout << *max_element(dp + 1, dp + n + 1);
    return 0;
}