Cod sursa(job #2829900)

Utilizator Marie02THGStanescu Maria Raluca Marie02THG Data 9 ianuarie 2022 04:51:06
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <bits/stdc++.h>


using namespace std;

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

int n;
int suma_max = -1001;
long long suma[16001];
bool viz[16001];


vector<vector<int>> lista_adiacenta;
vector<int> valoare;


void citire()
{
    in >> n;

    lista_adiacenta.resize(n+5);
    valoare.push_back(0);

    for(int i = 1; i <= n; i++)
    {
        int val;
        in >> val; //valorile asoc. nodurilor
        valoare.push_back(val);
    }

    for(int i = 1; i <= n-1; i++)
    {
        int a, b;
        in >> a >> b;
        //muchiile
        lista_adiacenta[a].push_back(b);
        lista_adiacenta[b].push_back(a);
    }
}

void DFS(int nod)
{
    suma[nod] = valoare[nod];
    viz[nod] = 1;

    for(auto vecin : lista_adiacenta[nod])
        if(viz[vecin] == 0)
        {
            DFS(vecin);
            suma[nod] = max(suma[nod], suma[nod] + suma[vecin]);
        }
}

void asmax()
{

    for(int i = 1; i <= n; i++)
    {
        if(suma[i] > suma_max)
            suma_max = suma[i];
    }

    out << suma_max;

}

int main()
{
    citire();
    DFS(1);
    asmax();

    return 0;
}