Cod sursa(job #3364544)

Utilizator TudorMitMituca Tudor TudorMit Data 5 septembrie 2026 13:15:34
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <vector>
using namespace std;

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

vector<int> ad[16005];

int v[16005],dp[16005],vf[16005];

int rez=-1000000000;

void dfs(int x){
    vf[x]=1;
    dp[x]=v[x];
    for(int i=0;i<ad[x].size();i++){
        if(vf[ad[x][i]]==0) {
            dfs(ad[x][i]);
            if(dp[ad[x][i]]>0)
                dp[x]+=dp[ad[x][i]];
        }
    }
    if(dp[x]>rez)
        rez=dp[x];
}

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