Cod sursa(job #973167)

Utilizator harababurelPuscas Sergiu harababurel Data 13 iulie 2013 16:54:43
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define nmax 16005
#define inf (1<<30)
using namespace std;

int best[nmax], val[nmax], n, a, b, radacina, sol = -inf;
vector <int> v[nmax];

bool used[nmax];

void dfs(int cur) {
	best[cur] = val[cur];
	used[cur] = true;

	for(int i=0; i<v[cur].size(); i++)
		if(!used[v[cur][i]]) {
			dfs(v[cur][i]);
			best[cur] += max(0, best[v[cur][i]]);
		}
}

int main() {
	ifstream f("asmax.in");
	ofstream g("asmax.out");

	f>>n;
	for(int i=1; i<=n; i++) f>>val[i];
	for(int i=1; i<n; i++) {
		f>>a>>b;
		v[a].push_back(b);
		v[b].push_back(a);
	}

	dfs(1);

	for(int i=1; i<=n; i++) sol = max(sol, best[i]);
	g<<sol<<"\n";

	return 0;
}