Pagini recente » Cod sursa (job #1044180) | Cod sursa (job #2690551) | Cod sursa (job #2383157) | Cod sursa (job #1425265) | Cod sursa (job #2653260)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define nmax 16001
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int n, v, a, b, sume[nmax], sumamax;
vector<int> graf[nmax];
bool vizitat[nmax];
int solve(int x) {
vizitat[x] = true;
for (auto i : graf[x])
if (!vizitat[i])
sume[x] += solve(i);
if (sume[x] < 0)
return 0;
else
return sume[x];
}
int main() {
in >> n;
for (int i = 1; i <= n; ++i) {
in >> v;
sume[i] += v;
}
for (int i = 1; i < n; ++i) {
in >> a >> b;
graf[a].push_back(b);
graf[b].push_back(a);
}
solve(1);
sumamax = sume[1];
for (int i = 2; i <= n; ++i)
sumamax = max(sumamax, sume[i]);
out << sumamax;
return 0;
}