Pagini recente » Cod sursa (job #1835123) | Cod sursa (job #2703117) | Cod sursa (job #3281982) | Cod sursa (job #1708383) | Cod sursa (job #2829789)
#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';
}