Cod sursa(job #3366090)

Utilizator TheBulkPauzaDeMasaTambozi Cezar Justin TheBulkPauzaDeMasa Data 29 septembrie 2026 08:53:48
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

int n, dp[16005], viz[16005];
vector<int> graf[16005];

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

int main()
{
    ifstream cin("asmax.in");
    ofstream cout("asmax.out");
    cin >> n;
    int neggative = 0, maxx = INT_MIN;
    for (int i = 1; i <= n; i ++)
    {
        cin >> dp[i];
        if (dp[i] <= 0)
        {
            maxx = max(dp[i], maxx);
            neggative ++;
        }
    }
    if (neggative == n)
    {
        cout << maxx;
        return 0;
    }
    for (int i = 1; i < n; i ++)
    {
        int a, b; cin >> a >> b;
        graf[a].push_back(b);
        graf[b].push_back(a);
    }
    dfs(1);
    int ans = 0;
    for (int i = 1; i <= n; i ++)
    {
        ans = max(dp[i], ans);
    }
    cout << ans;
    return 0;
}