Cod sursa(job #743815)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 6 mai 2012 11:03:10
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

const int maxn = 16010;

int n, f[maxn], v[maxn];

vector <int> graf[maxn];

void read()
{
	ifstream in("asmax.in");
	
	int i, a, b;
	
	in >> n;
	
	for(i = 1; i <= n; ++i)
		in >> v[i];
	
	for(i = 1; i < n; ++i){
		in >> a >> b;
		
		graf[a].push_back(b);
		graf[b].push_back(a);
	}
}

void DFS(int nod)
{
	vector <int> :: iterator it;
	
	f[nod] = 1;
	
	for(it = graf[nod].begin(); it!= graf[nod].end(); ++it)
		if(!f[*it]){
			DFS(*it);
			if(v[*it] > 0)
				v[nod] += v[*it];
		}
}

void write()
{
	ofstream out("asmax.out");
	
	int i, max = (-1) * (1 << 30);
	
	for(i = 1; i <= n; ++i)
		if(v[i] > max)
			max = v[i];
		
	out << max;
}

int main()
{
	read();
	DFS(1);
	write();
	
	return 0;
}