Cod sursa(job #2953853)

Utilizator alexia._.fFlorete Alexia Maria alexia._.f Data 12 decembrie 2022 12:19:54
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

const int NMAX = 16000;
const int INF = 16000001;

vector <int> muchii[NMAX + 1];
bool vizitat[NMAX + 1];
int valoare[NMAX + 1], scor[NMAX + 1], suma_maxima = 0;

void depth_first_search(int current)
{
    vizitat[current] = true;
    scor[current] = valoare[current];

    for(auto next : muchii[current])
    {
        if(!vizitat[next])
        {
            depth_first_search(next);

            if(scor[next] > 0)
            {
                scor[current] += scor[next];
            }
        }
    }
    suma_maxima = max(suma_maxima, scor[current]);
}

int main()
{
    int n;
    in >> n;
    suma_maxima = -INF
;    for(int i = 1; i <= n; i++)
    {
        in >> valoare[i];
        suma_maxima = max(suma_maxima, valoare[i]);
    }

    for(int i = 0; i < n; i++)
    {
        int x, y;
        in >> x >> y;
        muchii[x].push_back(y);
        muchii[y].push_back(x);
    }

    depth_first_search(1);

    out << suma_maxima;

    in.close();
    out.close();
    return 0;
}