Cod sursa(job #3327664)

Utilizator boboc132Boboc Teodor boboc132 Data 4 decembrie 2025 18:41:08
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

void dfs(int nod,const vector<vector<int>>&graf,vector<int>&dp,vector<bool>&vizitat,vector<int>&V){
    vizitat[nod]=true;
    dp[nod]=V[nod];
    for(int vecin:graf[nod]){
        if(!vizitat[vecin]){
            dfs(vecin,graf,dp,vizitat,V);
            if(dp[vecin]>0)
            dp[nod]+=dp[vecin];
        }
    }
}

int main(){
    int n;
    in>>n;
    vector<vector<int>>graf(n+1);
    vector<bool>vizitat(n+1,false);
    vector<int>dp(n+1,0);
    vector<int>V(n+1);
    int cost;
    int x,y;
    for(int i=1;i<=n;i++){
        in>>cost;
        V[i]=cost;
    }
    for(int i=1;i<n;i++){
        in>>x>>y;
        graf[x].push_back(y);
        graf[y].push_back(x);
    }
    dfs(1,graf,dp,vizitat,V);
    int maxi=V[1];
    for(int i=1;i<=n;i++){
        if(dp[i]>maxi)
            maxi=dp[i];
    }
    out<<maxi;
}