Cod sursa(job #3273626)

Utilizator Nasa1004Ema Nicole Gheorghe Nasa1004 Data 2 februarie 2025 21:29:51
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <bitset>
#include <vector>

using namespace std;
const int NMAX = 16002;
const int INF = 21e8;

ifstream cin("asmax.in");
ofstream cout("asmax.out");

bitset <NMAX> f;
int val[NMAX];
int dp[NMAX];
vector <vector <int>> v;

int ans = -INF;
void dfs(int start) {
    f[start] = 1;
    dp[start] = val[start];
    for(auto nod : v[start]) {
        if(f[nod])
            continue;
        dfs(nod);
        if(dp[nod] > 0) ///DOAR dc ne ajuta fiul
            dp[start] += dp[nod];
    }
    ans = max(ans, dp[start]);
}

int main()
{
    int n, a, b;
    cin >> n;
    v.resize(n + 1);
    for(int i = 1; i <= n; i++) {
        cin >> val[i];
    }
    for(int i = 1; i < n; i++) {
        cin >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs(1);
    cout << ans;
    return 0;
}