Cod sursa(job #3364736)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 10 septembrie 2026 08:59:47
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define int long long
const int NMAX = 20001;

int val[NMAX];
int dp[NMAX];
bool viz[NMAX];

vector<int> tree[NMAX];

void dfs(int nod){
    viz[nod] = true;
    dp[nod] = val[nod];
    for(auto son : tree[nod]){
        if(!viz[son]){
            dfs(son);
            if(dp[son] > 0){
                dp[nod] += dp[son];
            }
        }
    }
}

int32_t main(void){
    ofstream cout("asmax.out");
    ifstream cin("asmax.in");
    int n;
    cin >> n;
    for(int i = 1;i <= n;i++){
        cin >> val[i];
    }
    for(int i = 2;i <= n;i++){
        int a, b;
        cin >> a >> b;
        tree[a].push_back(b); /// we have a vertex from a -> b
        tree[b].push_back(a); /// we have a vertex from b -> a
    }
    dfs(1);
    int maxim = -1;
    for(int i = 1;i <=n ;i++){
        maxim = max(maxim, dp[i]);
    }
    cout << maxim << '\n';
}