Pagini recente » Cod sursa (job #133168) | Cod sursa (job #2643807) | Cod sursa (job #670146) | Cod sursa (job #215047) | Cod sursa (job #2998522)
#include <bits/stdc++.h>
using namespace std;
const int N = 16016;
vector<int> g[N], a(N);
bool visited[N];
int64_t sum[N];
void dfs(int u) {
visited[u] = true;
sum[u] = a[u];
for(auto v : g[u]) {
if(!visited[v]) { dfs(v); if(sum[v] > 0) sum[u] += sum[v]; }
}
}
int main() {
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
for(int i = 1; i < n; i++) {
int u, v;
scanf("%d%d", &u, &v);
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1);
int64_t mx = -1e18;
for(int i = 1; i <= n; i++) {
mx = max(mx, sum[i]);
}
printf("%lld", mx);
}