Cod sursa(job #3199220)

Utilizator TeodoraMaria123Serban Teodora Maria TeodoraMaria123 Data 1 februarie 2024 01:41:17
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

#define MAX_N 16000

int n, ans;
vector <int> dp;
vector <vector <int> > graph;
bitset <MAX_N + 1> viz;

void dfs(int node)
{
    viz[node] = 1;

    for(int neighbour : graph[node])
        if(!viz[neighbour])
        {
            dfs(neighbour);
            dp[node] += max(0, dp[neighbour]);
        }

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

int main()
{
    ios_base  :: sync_with_stdio(0);
    cin.tie(0);

    freopen("asmax.in", "r", stdin);
    freopen("asmax.out", "w", stdout);

    cin >> n;
    dp.resize(n + 1);
    graph.resize(n + 1);

    for(int i = 1; i <= n; i ++)
        cin >> dp[i];

    for(int i = 1; i < n ; i ++)
    {
        int a, b;
        cin >> a >> b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }

    ans = INT_MIN;
    dfs(1);

    cout << ans;
    return 0;
}