Cod sursa(job #3294725)

Utilizator ancamaximMaxim Anca Stefania ancamaxim Data 27 aprilie 2025 18:06:14
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

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

int main() {
    int n, x, y, res = INT_MIN;
    vector<vector<int>> adj;
    vector<int> dp;
    vector<int> parinte;

    fin >> n;
    adj.resize(n + 1);
    dp.resize(n + 1);
    parinte.resize(n + 1);
    for (int i = 1; i <= n; ++i)
        fin >> dp[i];

    for (int i = 1; i < n; ++i) {
        fin >> x >> y;
        adj[x].push_back(y);
        adj[y].push_back(x);
    }

    function<void(int)> dfs = [&](int node) -> void {
        for (int neigh : adj[node]) {
            if (neigh == parinte[node])
                continue;
            parinte[neigh] = node;
            dfs(neigh);
            dp[node] = max(dp[node], dp[node] + dp[neigh]);
        }
        res = max(res, dp[node]);
    };
    dfs(1);
    fout << res << "\n";

    return 0;
}