Cod sursa(job #3361113)

Utilizator EricDimiCismaru Eric-Dimitrie EricDimi Data 20 iulie 2026 15:37:17
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <climits>
#include <vector>

using namespace std;

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

const int MAX_N = 16000;

vector<int> adj[MAX_N + 1];
int val[MAX_N + 1],
    sum[MAX_N + 1];
int n, res = INT_MIN;

inline void maxSelf(int& x, int y)
{
    x = (x > y) ? x : y;
}

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

void DFS(int node, int parent)
{
    sum[node] = val[node];
    for(int child : adj[node])
        if(child != parent)
        {
            DFS(child, node);
            if(sum[child] > 0)
                sum[node] += sum[child];
        }
    maxSelf(res, sum[node]);
}

int main()
{
    Read();
    DFS(1, -1);
    g << res << '\n';

    f.close();
    g.close();
    return 0;
}