Cod sursa(job #2129365)

Utilizator osiaccrCristian Osiac osiaccr Data 12 februarie 2018 19:25:13
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
#define DEF 16010

using namespace std;

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

vector < int > L[DEF];

int n, sol[DEF], viz[DEF], Max = - 1 << 29;

void dfs (int nod) {
    int s = 0;

    viz[nod] = 1;

    for (int i = 0; i < L[nod].size (); ++ i) {
        if (viz[L[nod][i]] == 0) {
            dfs (L[nod][i]);
            if (sol[L[nod][i]] > 0)
                s += sol[L[nod][i]];
        }
    }

    sol[nod] += s;
}

int main () {
    fin >> n;
    for (int i = 1; i <= n; ++ i) {
        fin >> sol[i];
    }
    for (int i = 1; i <= n - 1; ++ i) {
        int x, y;
        fin >> x >> y;
        L[x].push_back (y);
        L[y].push_back (x);
    }

    dfs (1);

    for (int i = 1; i <= n; ++ i) {
        Max = max (Max, sol[i]);
    }

    fout << Max;

    return 0;
}