Cod sursa(job #2049895)

Utilizator MihaelaCismaruMihaela Cismaru MihaelaCismaru Data 27 octombrie 2017 19:27:24
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int val[16005],dp[16005],maxim,a,b,n;
bool hz[16005];
vector<int>v[16005];
int dfs (int nod) {
    dp[nod] = val[nod];
    for (int i = 0; i < v[nod].size(); i ++) {
        int a = v[nod][i];
        if (hz[a] == 0) {
            hz[a] = 1;
            int x = dfs (a);
            if (x > 0) {
                dp[nod] += x;
            }
        }
    }
    return dp[nod];
}
int main (void) {
    in >> n;
    for (int i = 1; i <= n; i ++) {
        in >> val[i];
    }
    for (int i = 1; i <= n-1; i ++) {
        in >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    hz[1] = 1;
    int x = dfs(1);
    for (int i = 1; i <= n; i ++) {
        maxim = max (maxim, dp[i]);
    }
    out << maxim;
    return 0;
}