Cod sursa(job #578544)

Utilizator costin22Muraru Costin costin22 Data 11 aprilie 2011 13:00:50
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;

const int NMAX = 16005;
const int INF = 1000000000;

int N;
int V[NMAX], maxim = -INF;
vector<int> Arb[NMAX];
bool viz[NMAX];

void citire()
{
	cin >> N;
	for(int i = 1 ; i <= N ; i++)
		cin >> V[i];
	int x, y;
	for(int i = 1 ; i <= N ; i++)
	{
		cin >> x >> y;
		Arb[x].push_back(y);
		Arb[y].push_back(x);
	}
}

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

void scrie()
{
	for(int i = 1 ; i <= N ; i++)
		maxim = max(maxim , V[i]);
	printf("%d\n", maxim);
}

int main()
{
	freopen("asmax.in", "r", stdin);
	freopen("asmax.out", "w", stdout);
	citire();
	DFS(1);
	scrie();
	return 0;
}