Cod sursa(job #2830230)

Utilizator vlad_dimaVlad Dima vlad_dima Data 9 ianuarie 2022 17:31:06
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

int asmax(const int nodCrt, vector<int>& sumaMax, const vector<vector<int>>& lsAd)
{
    static int maxVal = -10000;
    static vector<bool> vizitat(sumaMax.size(), false);
    vizitat[nodCrt] = true;

    for (auto vecin : lsAd[nodCrt])
        if (!vizitat[vecin])
        {
            asmax(vecin,sumaMax,lsAd);
            sumaMax[nodCrt] = max(sumaMax[vecin] + sumaMax[nodCrt], sumaMax[nodCrt]);
        }
    maxVal = max(maxVal, sumaMax[nodCrt]);
    if (nodCrt == 1)
        return maxVal;
}

int main()
{
    ifstream in("asmax.in");
    ofstream out("asmax.out");
    
    int N;
    in >> N;

    vector<int> valori(N+1);
    vector<int> sumaMax(N+1);
    for (int i = 1; i <= N; i++)
        in >> sumaMax[i];

    vector<vector<int>> lsAd(N+1);

    for (int i = 0; i < N-1; i++)
    {
        int x, y;
        in >> x >> y;
        lsAd[x].push_back(y);
        lsAd[y].push_back(x);
    }

    out << asmax(1,sumaMax,lsAd);
}