Pagini recente » Cod sursa (job #1831828) | Cod sursa (job #2306789) | Cod sursa (job #143794) | Cod sursa (job #2583867) | Cod sursa (job #3198678)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
set <int > v[16001];
int lim[16001],n, scor[16001];
vector <int > val;
void citire()
{
f >> n;
val.push_back(0);
for(int i = 1;i <= n;i ++)
{
int x;
f >> x;
val.push_back(x);
}
for(int i = 1;i < n;i ++)
{
int x, y;
f >> x >> y;
v[x].insert(y);
v[y].insert(x);
}
}
void dfs(int nod)
{
lim[nod] = 1;
scor[nod] = val[nod];
for(auto i : v[nod])
{
if(!lim[i])
dfs(i);
if(scor[i] > 0)
scor[nod] += val[i];
}
}
void rez()
{
dfs(n);
g << *max_element(scor + 1, scor + 1 + n);
}
int main()
{
citire();
rez();
return 0;
}