Pagini recente » Cod sursa (job #2601601) | Cod sursa (job #55425) | Cod sursa (job #205173) | Cod sursa (job #3340495) | Cod sursa (job #3347724)
#include <bits/stdc++.h>
using namespace std;
typedef long long i8;
vector<vector<int>> gf;
vector<i8> 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];
}
}
}
}
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 = LLONG_MIN;
for (int i = 1; i <= n; i++) {
res = max(vla[e], res);
}
cout << res << "\n";
}