Cod sursa(job #695729)

Utilizator avram_florinavram florin constantin avram_florin Data 28 februarie 2012 14:12:44
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<fstream>
#include<cstdio>
#include<vector>

using namespace std;

const int MaxN = 16001;
const int Inf = 0x3f3f3f3f;

const char InFile[] = "asmax.in";
const char OutFile[] = "asmax.out";

int N,Sol,Din[MaxN];
bool viz[MaxN];
vector<int> G[MaxN];

int maxim(int a,int b)
{
	return a > b ? a:b;
}

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

int main()
{
	ifstream fin( InFile );
	ofstream fout( OutFile );
	fin >> N;
	int i,x,y;
	for( i = 1 ; i <= N ; i++ )
		{
			fin >> x;
			Din[i] = x;
		}
	for( i = 1 ; i < N ; i++ )
		{
			fin >> x >> y;
			G[x].push_back(y);
			G[y].push_back(x);
		}
	DFS(1);
	Sol = -Inf;
	for( i = 1 ; i <= N ; i++ )
		if( Din[i] > Sol )
			Sol = Din[i];
	fout << Sol << '\n';
	fin.close();
	fout.close();
	return 0;
}