Cod sursa(job #2829789)

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

using namespace std;

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

vector<int>lista_adiacenta[100005];
unordered_map<int, bool> vector_vizitat;
int n,x,y,nod_start,sum_max_val,valoare_subtree,val[100005];


int dfs_asmax(int x)
{
    int valoare_subtree=val[x];
    vector_vizitat[x]=true;

    for(auto vecin : lista_adiacenta[x])
    {
        if(vector_vizitat[vecin]==false)
        {
            valoare_subtree=max(valoare_subtree,valoare_subtree+dfs_asmax(vecin));
        }
    }

    sum_max_val=max(valoare_subtree,sum_max_val);

    return valoare_subtree;
}


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

    for(int i=1; i<=n; i++)
    {
        fin>>val[i];
        sum_max_val=max(sum_max_val,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';
}