Pagini recente » Cod sursa (job #1505065) | Cod sursa (job #1560870) | Cod sursa (job #425974) | Cod sursa (job #253798) | Cod sursa (job #2044710)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int Nmax = 16000 + 5;
int n, a[Nmax], smax;
#define pb push_back
vector<int> v[Nmax];
bool viz[Nmax];
int dfs(int nod)
{
int ssm = a[nod];
viz[nod] = 1;
for(auto i : v[nod])
{
if(viz[i] == 1)continue;
int sact = dfs(i);
if(sact >= 0)
ssm += sact;
}
return ssm;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; ++i)fin >> a[i];
for(int i = 1, x , y; i < n; ++i)
{
fin >> x >> y;
v[x].pb(y);
v[y].pb(x);
}
fout << dfs(1);
return 0;
}