Cod sursa(job #3282860)

Utilizator GabrielPopescu21Silitra Gabriel - Ilie GabrielPopescu21 Data 7 martie 2025 08:13:45
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 MAX = 16005;
int a[MAX], dp[MAX], visited[MAX];
vector<int> graph[MAX];

void dfs(int node)
{
    dp[node] = a[node];
    visited[node] = 1;
    for (int next : graph[node])
    {
        if (!visited[next])
        {
            dfs(next);
            if (dp[node] + dp[next] > dp[node])
                dp[node] += dp[next];
        }
    }
}

int main()
{
    ifstream cin("asmax.in");
    ofstream cout("asmax.out");
    int n;
    cin >> n;

    for (int i = 1; i <= n; ++i)
        cin >> a[i];

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

    dfs(1);

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

    cout << ans;

    return 0;
}