Pagini recente » Cod sursa (job #1458869) | Clasament simulare_oji_2023_clasa_9_17_martie | Cod sursa (job #151317) | Cod sursa (job #1519734) | Cod sursa (job #1429445)
#include <fstream>
#include <vector>
using namespace std;
static const int MAXN = 16009;
int n, v[MAXN];
vector<int> G[MAXN];
int D[MAXN];
void dfs(int r, int from) {
D[r] = v[r];
for(int i = 0, l = G[r].size(); i < l; i++)
if(G[r][i] != from) {
dfs(G[r][i], r);
if(D[G[r][i]] > 0) D[r] += D[G[r][i]];
}
}
int main() {
int a, b;
ifstream f("asmax.in");
f >> n;
for(int i = 1; i <= n; i++) {
f >> v[i];
}
for(int i = 1; i < n; i++) {
f >> a >> b;
G[a].push_back(b);
G[b].push_back(a);
}
f.close();
dfs(1, -1);
int ans = -10000;
for(int i = 1; i <= n; i++)
ans = max(ans, D[i]);
ofstream g("asmax.out");
g << ans << endl;
g.close();
return 0;
}