Cod sursa(job #3349321)

Utilizator andrei_obrejaAndrei Obreja andrei_obreja Data 28 martie 2026 12:16:55
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
const int infmin = -1e9;
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<vector<int>> g;
vector<int> cost;
int n;
vector<int> dp;
void dfs(int nod, int parent)
{
    dp[nod] = cost[nod];
    for(auto v : g[nod])
    {
        if(v == parent) continue;
        dfs(v, nod);
        dp[nod] += max(0, dp[v]);
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    fin >> n;
    cost.resize(n + 1);
    g.resize(n + 1);
    dp.resize(n + 1);
    for(int i = 1; i <= n; i++)
        fin >> cost[i];
    for(int i = 1; i <= n - 1; i++)
    {
        int u,v;
        fin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }

    dfs(1, -1);
    int ans = infmin;
    for(int i = 1; i <= n; i++)
        ans = max(ans, dp[i]);
    fout << ans;
    return 0;
}