Cod sursa(job #3264935)

Utilizator StefanStratonStefan StefanStraton Data 25 decembrie 2024 20:31:02
Problema Asmax Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>

using namespace std;

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

int n;
vector <int> valori;
vector <vector <int>> lista;
vector <bool> viz;

int dfs(int nod, int sum){
    viz[nod] = 1;
    int now = valori[nod];
    for(int elem : lista[nod]){
        if(viz[elem] == 0)
            now += max(dfs(elem, sum), 0);
    }
    sum = max(sum, now);
    return sum;
}

int main()
{
    in >> n;

    valori.resize(n + 1);
    lista.resize(n + 1);
    viz.resize(n + 1);


    for(int i = 1; i <= n; i++)
        in >> valori[i];
    for(int i = 1; i <= n - 1; i++){
        int x, y;
        in >> x >> y;
        lista[x].push_back(y);
        lista[y].push_back(x);
    }
    out << dfs(1, -1000000);
    return 0;
}