Pagini recente » Cod sursa (job #1792206) | Cod sursa (job #1959818) | Cod sursa (job #1491952) | Monitorul de evaluare | Cod sursa (job #2438631)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector <int> g[16005];
int d[16005], n;
bool viz[16005];
void dfs(int nod){
viz[nod] = 1;
for (auto i : g[nod])
if (!viz[i]){
dfs(i);
if (d[i] > 0)
d[nod] += d[i];
}
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> d[i];
for (int i = 1; i < n; i++){
int a, b;
fin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
dfs(1);
int sol = -16000005;
for (int i = 1; i <= n; i++)
if (sol < d[i])
sol = d[i];
fout << sol << '\n';
return 0;
}