Cod sursa(job #2998522)

Utilizator 222cezarCezar Stilpeanu 222cezar Data 9 martie 2023 17:48:10
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 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() {
 	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);
}