Cod sursa(job #2836109)

Utilizator VladTZYVlad Tiganila VladTZY Data 19 ianuarie 2022 19:22:22
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <climits>
#include <vector>

#define NMAX 16005

using namespace std;

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

int n, a, b, maxi, start;
int answer = INT_MIN;
bool viz[NMAX];
int v[NMAX], value[NMAX];
vector <int> neighbours[NMAX];

void DFS(int node) {

    viz[node] = true;
    value[node] = v[node];

    for (auto neighbour : neighbours[node]) {

        if (!viz[neighbour]) {
            DFS(neighbour);

            if (value[neighbour] > 0)
                value[node] = value[node] + value[neighbour];
        }
    }

    answer = max(answer, value[node]);
}

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

        neighbours[a].push_back(b);
        neighbours[b].push_back(a);
    }

    DFS(1);

    g << answer << "\n";
    return 0;
}