Cod sursa(job #681495)

Utilizator informatician28Andrei Dinu informatician28 Data 17 februarie 2012 11:13:47
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream> 
#include<vector> 
#define pb push_back
#define DIM 16001
using namespace std; 

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

int N, maxim; 
vector< int > G[DIM]; 
bool viz[DIM]; 
int Val[DIM]; 

void DFs(int node)
{
	viz[node] = 1; 
	for(vector< int >:: iterator it = G[node].begin(); it != G[node].end(); ++it)
		if( !viz[*it] )
		{
			DFs(*it); 
			if( Val[*it] > 0 )
				Val[node] += Val[*it]; 
		}
}
int main()
{
	int i, x, y;
	
	in >> N;
	for(i = 1; i <= N; i++)
		in >> Val[i]; 
	for(i = 1; i <= N-1; i++)
	{
		in >> x >> y;
		G[x].pb(y); 
		G[y].pb(x); 
	}
	DFs(1); 
	
	maxim = -1000000; 
	for(i = 1; i <= N; i++)
		if( maxim < Val[i] )
			maxim = Val[i]; 
		
	out << maxim; 
	return 0;
}