Cod sursa(job #1429445)

Utilizator MciprianMMciprianM MciprianM Data 6 mai 2015 13:29:36
Problema Asmax Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.71 kb
#include <fstream>
#include <vector>

using namespace std;

static const int MAXN = 16009;
int n, v[MAXN];
vector<int> G[MAXN];
int D[MAXN];

void dfs(int r, int from) {
	D[r] = v[r];
	for(int i = 0, l = G[r].size(); i < l; i++)
		if(G[r][i] != from) {
			dfs(G[r][i], r);
			if(D[G[r][i]] > 0)	D[r] += D[G[r][i]];
		}
}

int main() {
	int a, b;
	ifstream f("asmax.in");
	f >> n;
	for(int i = 1; i <= n; i++) {
		f >> v[i];
	}
	for(int i = 1; i < n; i++) {
		f >> a >> b;
		G[a].push_back(b);
		G[b].push_back(a);
	}
	f.close();
	dfs(1, -1);
	int ans = -10000;
	for(int i = 1; i <= n; i++)
		ans = max(ans, D[i]);
	ofstream g("asmax.out");
	g << ans << endl;
	g.close();
	return 0;
}