Cod sursa(job #845142)

Utilizator arrayAnghel Mihai array Data 30 decembrie 2012 14:50:03
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <vector>
using namespace std;
const char iname[] = "asmax.in";
const char oname[] = "asmax.out";
ifstream fin(iname);
ofstream fout(oname);
int N , i , j , x , y , s1 , s2 , solc , sol_vmax;
int cn[ 16004 ];
vector < int > v[ 16004 ];
int MN = 1 << 30;
int main()
{
	fin >> N;
	for (i = 1; i <= N; ++i)
		fin >> cn[i];
	for (i = 1; i <= N-1; ++i)
	{
		fin >> x >> y;
		v[x].push_back(cn[y]);
		v[y].push_back(cn[x]);
	}
	vector < int > :: iterator it;
	sol_vmax = MN * (-1);
	for (i = 1; i <= N; ++i)
	{
		MN = 1 << 30;
		solc = MN * (-1);
		for (j = 0; j < v[i].size(); ++j)
		{
			s1 += v[i][j];
			if (MN > s2)
				MN = s2;
			if (solc < s1 - MN && j > 0)
				solc = s1 - MN;
			s2 += v[i][j];
		}
		if (solc > sol_vmax)
			sol_vmax = solc + cn[i];
		s1 = s2 = 0;
	}
	fout << sol_vmax << '\n';
	return 0;
}