Cod sursa(job #2645612)
| Utilizator | Data | 29 august 2020 09:43:19 | |
|---|---|---|---|
| Problema | Asmax | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.56 kb |
#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;
}