Cod sursa(job #1003389)

Utilizator vld7Campeanu Vlad vld7 Data 30 septembrie 2013 16:29:49
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

const int MAX_N = 16005;

int n, v[MAX_N], dp[MAX_N], rez = -10000;
vector <int> L[MAX_N];

bool used[MAX_N];

void read() {
    f >> n;
    for (int i = 1; i <= n; i++)
        f >> v[i];
    
    for (int i = 1; i <= n + 1; i++) {
        int a, b;
        f >> a >> b;
        L[a].push_back (b);
        L[b].push_back (a);
    }
}

void dfs (int nod) {
    used[nod] = 1;
    dp[nod] = v[nod];
    
    for (int i = 0; i < L[nod].size(); i++) {
        int fiu = L[nod][i];
        if (!used[fiu]) {
            dfs (fiu);
            if (dp[fiu] > 0)
                dp[nod] += dp[fiu];
        }
    }
}

int main() {
    read();
    dfs (1);
    
    for (int i = 1; i <= n; i++)
        rez = max (rez, dp[i]);
    g << rez << '\n';
    return 0;
}