Cod sursa(job #2830608)

Utilizator razvanflorinPotcoveanu Florin-Razvan razvanflorin Data 10 ianuarie 2022 02:31:05
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, valori[16001], rezultat[16001];
vector<int> lista[16001];
bool vizitat[16001];

void dfs(int start)
{
    vizitat[start] = true;

    rezultat[start] = valori[start];

    for(unsigned int i = 0; i < lista[start].size(); i++)
    {
        int nod = lista[start][i];
        if(!vizitat[nod])
        {
            dfs(nod);

            rezultat[start] = max(rezultat[start], rezultat[start] + rezultat[nod]);
        }
    }
}


int main()
{
    f >> n;

    for(int i = 1; i <= n; i++)
        f >> valori[i];

    for(int i = 1; i < n; i++)
    {
        int x, y;

        f >> x >> y;

        lista[x].push_back(y);
        lista[y].push_back(x);
    }

    dfs(1);

    int afisare = INT_MIN;

    for(int i = 1; i <= n ; i++)
        if(rezultat[i] > afisare)
            afisare = rezultat[i];

    g << afisare;

    return 0;
}