Cod sursa(job #2645612)

Utilizator saeed_odakSaeed Odak saeed_odak 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;
}