Cod sursa(job #3312068)

Utilizator iustinola16Olariu Iustin iustinola16 Data 25 septembrie 2025 20:59:20
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

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

const int NMAX = 16005;

int v[NMAX];
int dp[NMAX];

void dfs(int node, int parent, vector <vector <int>>& edges) {
    dp[node] = v[node];

    for (auto it : edges[node]) {
        if (it != parent) {
            dfs(it, node, edges);

            dp[node] += max(dp[it], 0);
        }
    }
}

int main()
{
    int n;
    fin >> n;

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

    vector <vector <int>> edges(n + 1);
    for (int i = 1; i < n; i++) {
        int a, b;
        fin >> a >> b;

        edges[a].push_back(b);
        edges[b].push_back(a);
    }

    dfs(1, 0, edges);

    int maxim = INT_MIN;
    for (int i = 1; i <= n; i++) {
        maxim = max(maxim, dp[i]);
    }

    fout << maxim;
    return 0;
}