Cod sursa(job #2199281)

Utilizator cip_ionescuCiprian Ionescu cip_ionescu Data 27 aprilie 2018 10:04:55
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#define MAX_NM 16001

using namespace std;

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

int n, nr, vf[2 * MAX_NM], urm[2 * MAX_NM], lst[MAX_NM], viz[MAX_NM], v[MAX_NM], s, smax;

void adauga(int x, int y)
{
    nr++;
    vf[nr] = y;
    urm[nr] = lst[x];
    lst[x] = nr;
}

void dfs(int x)
{
    viz[x] = true;

    s += v[x];
    if (s > smax) smax = s;

    int p = lst[x], y;
    while (p != 0) {
        y = vf[p];
        if (!viz[y]) dfs(y);
        p = urm[p];
    }
}

int main()
{
    int x, y;
    fin >> n;
    for (int i = 1 ; i <= n ; i++) fin >> v[i];
    for (int i = 1 ; i < n ; i++) {
        fin >> x >> y;
        adauga(x, y);
        adauga(y, x);
    }
    dfs(1);

    fout << smax;
    return 0;
}