Cod sursa(job #3299732)

Utilizator TimofeiFilipTimofei Filip Emanuel TimofeiFilip Data 9 iunie 2025 20:15:44
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;

const int NMAX = 16001;

int n, cost[NMAX];
vector<int> adj[NMAX];
bool viz[NMAX];
int max_sum = INT_MIN;

int dfs(int nod)
{
    viz[nod] = true;
    int s = cost[nod];

    for (int vecin : adj[nod])
    {
        if (!viz[vecin])
        {
            int val = dfs(vecin);
            if (val > 0)
                s += val;
        }
    }

    max_sum = max(max_sum, s);
    return s;
}

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

    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        scanf("%d", &cost[i]);
    }

    for (int i = 1; i < n; i++)
    {
        int x, y;
        scanf("%d %d", &x, &y);
        adj[x].push_back(y);
        adj[y].push_back(x);
    }

    dfs(1);
    printf("%d\n", max_sum);
    return 0;
}