Cod sursa(job #3163216)

Utilizator UengineDavid Enachescu Uengine Data 30 octombrie 2023 22:51:56
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream cin("asmax.in");
ofstream cout("asmax.out");

const int N = 16e3;
int val[N + 5], sum = -2e7;
vector <int> graph[N + 5];

int dfs(int nod, int tata) {
    int best = val[nod];
    for (auto vecin : graph[nod]) {
        if (vecin == tata)
            continue;
        int val_crt = dfs(vecin, nod);
        if (val_crt >= 0)
            best += val_crt;
    }
    sum = max(sum, best);
    return best;
}

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> val[i];
    for (int i = 1; i < n; i++) {
        int a, b;
        cin >> a >> b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    dfs(1, 0);
    cout << sum;
    return 0;
}