Pagini recente » Cod sursa (job #2435262) | Cod sursa (job #2193182) | Cod sursa (job #3224494) | Cod sursa (job #2773492) | Cod sursa (job #2829771)
#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';
}