Cod sursa(job #414903)

Utilizator loginLogin Iustin Anca login Data 10 martie 2010 18:23:56
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
# include <fstream>
# include <iostream>
# include <vector>
# include <algorithm>
using namespace std;
int n;
vector<int> V, G[16005];
int v[16003], sol=-1000000000;

void read ()
{
	ifstream fin ("asmax.in");
	fin>>n;
	V.push_back(0);
	for (int i=1;i<=n;i++)
	{
		int x;
		fin>>x;
		V.push_back(x);
	}
	int x , y;
	for(int i=1;i<n;i++)
	{
		fin>>x>>y;
		G[x].push_back(y);
		G[y].push_back(x);
	}
}

void DFS (int k)
{
	v[k]=1;
	for (vector <int>::iterator I=G[k].begin();I<G[k].end();++I)
		if (!v[*I])
		{
			DFS(*I);
			if (V[k]<V[*I]+V[k])
				V[k]=V[*I]+V[k];
			if (V[k]>sol)
				sol=V[k];
		}
	if (G[k].size()==1)
		if (V[k]>sol)
			sol=V[k];
}

int main()
{
	read ();
	DFS(1);
	ofstream fout ("asmax.out");
	fout<<sol;
	return 0;
}