Cod sursa(job #2998523)

Utilizator 222cezarCezar Stilpeanu 222cezar Data 9 martie 2023 17:48:38
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#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() {
	freopen("asmax.in", "r", stdin);
	freopen("asmax.out", "w", stdout);
 	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);
}