Cod sursa(job #3202130)

Utilizator iusty64Iustin Epanu iusty64 Data 10 februarie 2024 18:39:45
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>
using namespace std;

const int Vmax = 100001;

bool viz[Vmax];
vector<int> v[Vmax];
int sumaMax[Vmax];
int sumaMaxima;
int n, a[Vmax];
void dfs(int nod){
    viz[nod]=1;
    sumaMax[nod] = a[nod];
    for(int j : v[nod]){
        if(!viz[j]){
            dfs(j);
            if(sumaMax[j] > 0)
                sumaMax[nod] += sumaMax[j];
        }
    }
    if(sumaMax[nod] > sumaMaxima)
        sumaMaxima = sumaMax[nod];
}

int main(){
    ifstream fin("asmax.in");
    ofstream fout("asmax.out");
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>a[i];
    }
    for(int i=1;i<=n;i++){
        int x, y;
        fin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs(1);
    fout<<sumaMaxima;
}