Pagini recente » Cod sursa (job #1756345) | Cod sursa (job #686922) | Cod sursa (job #2970875) | Cod sursa (job #1679995) | Cod sursa (job #2905628)
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int n,t[16005],v[16005],best[16005],rad;
vector<int>f[16005];
void citire()
{
in >> n;
for (int i = 1; i <= n; i++)
{
in >> v[i];
best[i] = v[i];
}
for (int i = 1; i < n; i++)
{
int x,y;
in >> x >> y;
t[y] = x;
f[x].push_back(y);
}
for (int i = 1; i <= n; i++)
if (t[i] == 0)
rad = i;
}
int rec(int p)
{
for (int i = 0; i < f[p].size(); i++)
best[p] += max(0,rec(f[p][i]));
return best[p];
}
void fin()
{
int maxim = -1e9;
for (int i = 1; i <= n; i++)
maxim = max(maxim,best[i]);
out << maxim;
}
int main()
{
citire();
rec(rad);
fin();
return 0;
}