Pagini recente » Cod sursa (job #2158446) | Cod sursa (job #1113530) | Cod sursa (job #2426554) | Cod sursa (job #1300802) | Cod sursa (job #3347726)
#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];
}
}
}
}
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 (int i = 1; i <= n; i++) {
res = max(vla[i], res);
}
cout << res << "\n";
}