Cod sursa(job #3281202)

Utilizator anast56Anastasia Rosan anast56 Data 28 februarie 2025 17:24:52
Problema Asmax Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, v[16005], dp[16005], maxi = -1e9;
vector <int> graf[16005];
bitset <16005> viz;

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

    for (auto i : graf[nod])
        if (!viz[i])
        {
            dp[i] = v[i];
            dfs(i);
            if (v[i] > 0)
                dp[nod] += dp[i];
        }
}

int main()
{
    fin >> n;

    for (int i = 1; i <= n; i ++)
        fin >> v[i];

    for (int i = 1; i < n; i ++)
    {
        int x, y;
        fin >> x >> y;

        graf[x].push_back(y);
        graf[y].push_back(x);
    }

    dp[1] = v[1];

    dfs(1);

    for (int i = 1; i <= n; i ++)
        maxi = max(maxi, dp[i]);

    fout << maxi;

    return 0;
}