Cod sursa(job #3140351)

Utilizator SSKMFSS KMF SSKMF Data 5 iulie 2023 17:39:57
Problema Asmax Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream cin ("asmax.in");
ofstream cout ("asmax.out");

vector <int> fii[16001];
int suma[16001];

void SumaMaxima (int nod_actual)
{
    int maxim = -2e9;
    for (auto fiu : fii[nod_actual]) 
    {
        SumaMaxima(fiu);
        suma[nod_actual] += max(0 , suma[fiu]);
        maxim = max(maxim , suma[fiu]);
    }

    suma[nod_actual] = max(suma[nod_actual] , maxim);
}

int main ()
{
    int noduri;
    cin >> noduri;

    for (int indice = 1 ; indice <= noduri ; indice++)
        cin >> suma[indice];

    for (int indice = 1 , nod[2] ; indice < noduri ; indice++)
    {
        cin >> nod[0] >> nod[1];

        if (nod[0] > nod[1])
            swap(nod[0] , nod[1]);

        fii[nod[0]].push_back(nod[1]);
    }

    SumaMaxima(1);
    cout << suma[1];
    cout.close(); cin.close();
    return 0;
}