Cod sursa(job #2856884)

Utilizator RaresCelescuRares Celescu RaresCelescu Data 24 februarie 2022 15:19:51
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int N = 16001;

vector <int> a[N];

bool viz[N];
int n,suma[N],valoare[N];

void citire ()
{
    cin >> n;
    for (int i=1; i<=n; i++)
        cin >> valoare[i];
    for (int i=1; i< n; i++){
        int x,y;
        cin >>x>>y;
        a[x].push_back(y);
        a[y].push_back(x);

    }

}
void DFS(int x)
{
    viz[x] = 1;
    suma[x] = valoare[x];
    for (auto y: a[x]){
        if (!viz[y]){
            DFS(y);
            if (suma[y] > 0)
                suma[x] += suma[y];
        }

    }
}
int main()
{
    citire ();
    DFS(1);
    int maxi = -1e7;
    for (int i=1; i<=n; i++)
        if (suma[i] > maxi)
            maxi = suma[i];
    cout << maxi;
    return 0;
}