Cod sursa(job #2834563)

Utilizator Edyci123Bicu Codrut Eduard Edyci123 Data 17 ianuarie 2022 11:15:50
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
#define DIM 16005
#define INF 0x3f3f3f3f

using namespace std;

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

int n, ans = -INF, sum[DIM], cost[DIM];
bitset <DIM> v;
vector <int> edges[DIM];

void dfs(int node)
{
    v[node] = 1;
    sum[node] = cost[node];

    for (auto child: edges[node])
        if (!v[child])
        {
            dfs(child);
            sum[node] = max(sum[node], sum[node] + sum[child]);
        }
    ans = max(sum[node], ans);
}

int main()
{
    f >> n;
    for (int i = 1; i <= n; i++)
        f >> cost[i];

    for (int i = 1; i < n; i++)
    {
        int x, y;
        f >> x >> y;
        edges[x].push_back(y);
        edges[y].push_back(x);
    }

    dfs(1);

    g << ans;

    return 0;
}