Cod sursa(job #2705300)

Utilizator Bogdan.paun50Mandresi Bogdan Bogdan.paun50 Data 12 februarie 2021 12:55:54
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <vector>

using namespace std;

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

vector<int> l[16005];

int n, v[16005], Max=-10000000, a, b;
bool ok[16005];

void dfs(int x)
{
    ok[x] = 1;
    for(int i = 0; i < l[x].size(); i++)
    {
        int y = l[x][i];
        if(ok[y] == 0)
        {
            dfs(y);
            if(v[y] > 0)
                v[x] += v[y];
        }
    }
    if(Max < v[x])
        Max = v[x];
}

int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> v[i];
    for(int i = 1; i < n; i++)
    {
        fin >> a >> b;
        l[a].push_back(b);
        l[b].push_back(a);
    }

    dfs(1);

    fout << Max << "\n";
    return 0;
}