Pagini recente » Cod sursa (job #3332085) | Monitorul de evaluare | Cod sursa (job #3323919) | Cod sursa (job #2189504) | Cod sursa (job #3347722)
#include <bits/stdc++.h>
using namespace std;
typedef long long i8;
vector<vector<int>> gf;
vector<int> vla;
vector<int> vst;
void dfs(int n) {
vst[n] = true;
for (auto e : gf[n]) {
if (!vst[e]) {
dfs(e);
if (vla[e] > 0) {
vla[n] += vla[e];
}
}
}
return;
}
int main() {
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int n;
cin >> n;
vla.resize(n + 1);
vst.resize(n + 1);
for (int i = 1; i <= n; i++) {
cin >> vla[i];
vst[i] = false;
}
gf.resize(n + 1);
for (int i = 0; i < n - 1; i++) {
int a, b;
cin >> a >> b;
gf[a].push_back(b);
gf[b].push_back(a);
}
dfs(1);
int res = INT32_MIN;
for (auto e : vla) {
res = max(e, res);
}
cout << max(res, 0) << "\n";
}