Cod sursa(job #2986226)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 27 februarie 2023 23:07:19
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
// #define in cin
// #define out cout

using namespace std;

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

const int nmax = 1e4 + 6e3 + 5e0;

int dp[nmax];
int v[nmax];
vector<int> adj[nmax];

int res = INT_MIN;

void dfs(int nod, int p = -1)
{
    dp[nod] = v[nod];
    for (auto i : adj[nod])
    {
        if (i != p)
        {
            dfs(i, nod);
            dp[nod] += max(0, dp[i]);
        }
    }
    res = max(res, dp[nod]);
}

int main()
{
    int n;
    in >> n;
    for (int i = 1; i <= n; i++)
    {
        in >> v[i];
    }
    for (int i = 1; i < n; i++)
    {
        int a, b;
        in >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    dfs(1);
    out << res;
}