Cod sursa(job #1218762)

Utilizator yololy97Olaru Bogdan-Ioan yololy97 Data 12 august 2014 14:40:47
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#include <vector>
#include <algorithm>
#define N 16001
using namespace std;
int n, v[N], mx = -0x3f3f3f3f, used[N], sol[N];
vector<int> a[N];
void read(){
	scanf("%d ", &n);
	for(int i = 1; i <= n; ++i)
		scanf("%d ", &v[i]),
		sol[i] = v[i];
	int x, y;
	for(int i = 1; i <= n; ++i){
		scanf("%d %d ", &x, &y);
		a[x].push_back(y);
		a[y].push_back(x);
	}
}
void dfs(int t){
	used[t] = true;
	for(vector<int>::iterator it = a[t].begin(); it != a[t].end(); ++it)
		if(!used[*it]){
			dfs(*it);
			if(sol[*it] > 0)
				sol[t] += sol[*it];
		}
}
void solve(){
	dfs(1);
	for(int i = 1; i <= n; ++i)
		mx = max(mx, sol[i]);
	printf("%d\n", mx);
}
int main(){
	freopen("asmax.in", "r", stdin);
	freopen("asmax.out", "w", stdout);
	read();
	solve();
}