Cod sursa(job #3336967)

Utilizator Alex283810Mocan Alexandru Vali Alex283810 Data 26 ianuarie 2026 20:02:07
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
std::vector<int>val;
std::vector<std::vector<int>>muchii;
std::vector<int>dp;
void dfs(int cur, int parent)
{
    int suma = val[cur];
    for(auto next: muchii[cur])
    {
        if(next != parent)
        {
            dfs(next, cur);
        }
        if(dp[next] > 0)
            suma += dp[next];
    }
    dp[cur] = suma;

}
int main()
{
    freopen("brad.in", "r", stdin);
    freopen("brad.out", "w", stdout);
    int n;
    std::cin >> n;
    val.resize(n + 1);
    muchii.resize(n + 1);
    dp.resize(n + 1);
    for(int i = 1; i <= n; i++)
    {
        std::cin >> val[i];
    }
    for(int i = 1; i <= n - 1; i++)
    {
        int a, b;
        std::cin >> a >> b;
        muchii[a].push_back(b);
        muchii[b].push_back(a);
    }
    int ans = INT_MIN;
    dfs(1, -1);
    for(int i = 1; i <= n; i++)
    {
        ans = std::max(dp[i], ans);
    }
    std::cout << ans;
}