Cod sursa(job #1899441)

Utilizator flibiaVisanu Cristian flibia Data 2 martie 2017 19:03:02
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <bits/stdc++.h>
#define pb push_back

using namespace std;

ifstream in("asmax.in");
ofstream out("asmax.out");

int n, a[16100], dp[16100], x, y; bool viz[16100];
vector <int> v[16100];

void dfs(int nod){
	viz[nod] = 1;
	int ans = 0;
	for(auto it : v[nod])
		if(!viz[it]){
			dfs(it);
			if(dp[it] > 0) ans += dp[it];
		} 
	dp[nod] = a[nod] + ans;
}

int main(){
	in >> n;
	for(int i = 1; i <= n; i++) in >> a[i];
	for(int i = 1; i < n; i++){
		in >> x >> y;
		v[x].pb(y);
		v[y].pb(x);
	}
	for(int i = 1; i <= n; i++) dp[i] = a[i];
	dfs(1);
	out << *max_element(dp+1, dp+n+1);
	return 0;
}