Cod sursa(job #3336985)

Utilizator Benjamin4321234Benjamin Secara Benjamin4321234 Data 26 ianuarie 2026 20:10:08
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;

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

int n,x,y,nr;
int maxi=-1e9;
vector<int> v[16001];
int dp[16001];

void dfs(int nod, int parinte){
    for(auto u:v[nod]){
        if(u!=parinte){
            dfs(u,nod);
            ///calculam suma pe subarbore
            ///daca un subarbore are costul pozitiv
            ///atunci merita sa il adunam
            ///pentru ca creste suma nodului
            ///cu subarborii
            if(dp[u]>0){
                dp[nod]+=dp[u];
            }
        }
    }
}

int main()
{
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>dp[i];
    }
    for(int i=1;i<=n-1;i++){
        fin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs(1,-1);
    for(int i=1;i<=n;i++){
        maxi=max(maxi,dp[i]);
    }
    fout<<maxi;
    return 0;
}