Cod sursa(job #2461744)

Utilizator mihai2003LLL LLL mihai2003 Data 26 septembrie 2019 08:59:45
Problema Asmax Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 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])
            dfs(y);
        suma[x]=std::max(suma[x],suma[x]+valori[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;
}