Cod sursa(job #1866704)

Utilizator razvandraghiciDraghici Razvan razvandraghici Data 3 februarie 2017 14:20:48
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <vector>
#define DIM 16002

using namespace std;

vector<int> L[DIM];
int u[DIM], v[DIM], d[DIM];

int sol, n, x, y;

void dfs(int nod) {
    u[nod] = 1;
    d[nod] = v[nod];

    for (int i=0;i<L[nod].size();i++) {
        int fiu = L[nod][i];
        if (u[fiu] == 0) {
            dfs(fiu);
            if (d[fiu] > 0)
                d[nod] += d[fiu];
        }
    }
    sol = max(sol, d[nod]);
}

int main () {
    sol = -1000000000;
    ifstream fin ("asmax.in");
    ofstream fout("asmax.out");

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

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



    dfs(1);
    fout<<sol;
    return 0;
}