Cod sursa(job #3352111)

Utilizator Andrei1209Andrei Mircea Andrei1209 Data 23 aprilie 2026 19:58:26
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");

const int Nmax = 16000 + 5;
vector <int> vecini[Nmax];
int dp[Nmax], val[Nmax], sol;

void dfs(int nod, int tata )
{
    dp[nod] = val[nod];
    for ( int vecin : vecini[nod] )
    {
        if ( vecin != tata )
        {
            dfs(vecin, nod);
            if ( dp[vecin] > 0 )
                dp[nod] += dp[vecin];
        }
    }
    sol = max(sol, dp[nod]);
}
int main()
{
    int n;
    fin >> n;
    int i;
    for ( i = 1; i <= n; ++i )
        fin >> val[i];

    for ( i = 1; i < n; ++i )
    {
        int a, b;
        fin >> a >> b;
        vecini[a].push_back(b);
        vecini[b].push_back(a);

    }

    dfs( 1, -1);
    fout << sol << endl;
    return 0;
}