Cod sursa(job #2461749)

Utilizator mihai2003LLL LLL mihai2003 Data 26 septembrie 2019 09:10:33
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

std::ifstream in("asmax.in");
std::ofstream out("asmax.out");
std::vector<int>v[16001];
int valori[16001];
bool viz[16001];
int suma[16001];

void dfs(int x){
    suma[x]=valori[x];
    viz[x]=1;
    for(int y:v[x]){
        if(!viz[y]){
            viz[y]=1,dfs(y);
            if(suma[y]>0)
                suma[x]+=suma[y];
            }
        }
}

int main(){
    int n;
    in>>n;
    for(int i=1;i<=n;i++)
        in>>valori[i];
    for(int i=1,x,y;i<n;i++)
        in>>x>>y,v[x].push_back(y),v[y].push_back(x);
    for(int i=1;i<=n;i++)
        if(!viz[i])
            dfs(i);
    for(int i=1;i<=n;i++)
        std::cout<<suma[i]<<" ";
    out<<*std::max_element(suma+1,suma+n+1);
    return 0;
}