Pagini recente » Cod sursa (job #211843) | Cod sursa (job #1479063) | Cod sursa (job #2955667) | Cod sursa (job #15802) | Cod sursa (job #2829791)
#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()
{
nod_start=1;
sum_max_val=INT_MIN;
fin>>n;
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;
}