Cod sursa(job #603326)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 15 iulie 2011 15:26:22
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb

#include <cstdio>
#include <fstream>
#include <vector>
#include <climits>

using namespace std;

vector<int> g[16001];
bool b[16001];
int v[16001],S=INT_MIN,n;

void DF (int w){
	
	b[w]=1;
	for(vector<int>::iterator i=g[w].begin();i<g[w].end();++i)
		if(!b[*i]){
			DF(*i);
			if(v[w]<v[w]+v[*i])
				v[w]+=v[*i];
			if(v[w]>S)
				S=v[w];
			}
	if(g[w].size()==1&&v[w]>S)
		S=v[w];
	
	}

int main ()
{
	
	ifstream f ("asmax.in");
	freopen ("asmax.out","w",stdout);
	f>>n;
	for(int i=1;i<=n;++i)
		f>>v[i];
	for(int x,y,i=1;i<n;++i){
		f>>x>>y;
		g[x].push_back(y);
		g[y].push_back(x);
		}
	DF(1);
	printf("%d",S);
		
	return 0;}