Cod sursa(job #3294718)

Utilizator ancamaximMaxim Anca Stefania ancamaxim Data 27 aprilie 2025 17:44:55
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 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> in_degree;

    fin >> n;
    adj.resize(n + 1);
    dp.resize(n + 1);
    in_degree.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);
        ++in_degree[y];
    }

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

    return 0;
}