Cod sursa(job #2780737)

Utilizator Tudor_PascaTudor Pasca Tudor_Pasca Data 7 octombrie 2021 19:20:25
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<bits/stdc++.h>

using namespace std;

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

const int INF = 2e9;

int n, ans = -INF;
int val[16100], scor[16100];
vector<vector<int>> adj;

void solve(int node, int father)
{
    scor[node] = val[node];

    for(auto it: adj[node])
    {
        if(it == father)
            continue;

        solve(it, node);

        if(scor[it] > 0)
            scor[node] += scor[it];
    }

    ans = max(ans, scor[node]);
}

int main()
{
    in >> n;

    adj.resize(n + 5);

    for(int i = 1; i <= n; i++)
        in >> val[i];

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

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

    solve(1, 0);

    out << ans << '\n';

    return 0;
}