Cod sursa(job #2829771)

Utilizator rimihaiMihai Radu-Ioan rimihai Data 8 ianuarie 2022 22:31:24
Problema Asmax Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

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

vector<long long>lista_adiacenta[100001];
unordered_map <int,bool> vector_vizitat;

long long n,x,y,nod_start,sum_max_val=INT_MIN,valoare_nod;
long long val[100001];


int dfs_asmax(int x)
{
    valoare_nod=val[x];
    vector_vizitat[x]=true;
    for(auto vecin:lista_adiacenta[x])
    {
        if(vector_vizitat[vecin]==false)
            valoare_nod=max(valoare_nod,valoare_nod+dfs_asmax(vecin));
    }
    sum_max_val=max(sum_max_val,valoare_nod);

    return valoare_nod;
}
int main()
{
    fin>>n;
    nod_start=1;

    for(int i=1; i<=n; i++)
        fin>>val[i];

    for(int i=1; i<=n-1; i++)
    {
        fin>>x>>y;
        lista_adiacenta[x].push_back(y);
        lista_adiacenta[y].push_back(x);
    }

    dfs_asmax(nod_start);

    fout<<sum_max_val<<'\n';
}