Cod sursa(job #3337489)

Utilizator Beverita2345Bretan Alexandru Beverita2345 Data 28 ianuarie 2026 08:34:40
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
int dp[16001];
set<int>adj[16001];
int val[16001];

void dfs(int node,int parent){
    int sum = val[node];

    for(auto it : adj[node]){
        if(it == parent)continue;
        dfs(it,node);
        if(dp[it] > 0){
            sum += dp[it];
        }
    }

    dp[node] = sum;
}

int main(){

    in>>n;

    for(int i = 1;i <= n; i++){
        in>>val[i];
    }

    for(int i = 1;i < n; i++){
        int x,y;

        in>>x>>y;

        adj[y].insert(x);
        adj[x].insert(y);
    }

    dfs(1,-1);

    int solutie = INT_MIN;

    for(int i = 1;i <= n; i++){
        solutie = max(solutie,dp[i]);
    }

    out<<solutie;

    return 0;
}