Pagini recente » Cod sursa (job #1068297) | Cod sursa (job #393626) | Cod sursa (job #3138333) | Cod sursa (job #1943978) | Cod sursa (job #2645611)
#include <bits/stdc++.h>
using namespace std;
const int N = 16161;
int sum[N];
int val[N];
int mx = -1e9;
vector <int> g[N];
void dfs(int u, int p) {
sum[u] = val[u];
for(int v : g[u]) {
if(p == v) continue;
dfs(v, u);
sum[u] += max(0, sum[v]);
}
mx = max(mx, sum[u]);
}
int main() {
freopen("asmax.in", "r", stdin);
freopen("asmax.out", "w", stdout);
int n;
cin >> n;
for(int i=1; i<=n; i++) cin >> val[i];
for(int i=1; i<n; i++) {
int x, y;
cin >> x >> y;
g[x].push_back(y);
g[y].push_back(x);
dfs(1, 0);
cout << mx << endl;
}
return 0;
}