Cod sursa(job #866176)

Utilizator andunhillMacarescu Sebastian andunhill Data 27 ianuarie 2013 17:13:42
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
#include<iostream>
#include<ctime>
#include<vector>
using namespace std;

clock_t start=clock();

ifstream f("asmax.in");
ofstream g("asmax.out");

int N;
int V[16001];
int sum[16001];

vector<int> graph[16001];

void DFS(int node)
{
	int act = 0;
	sum[node] = -1;

	for(vector<int>::iterator it = graph[node].begin(); it != graph[node].end(); it++)
	{	if(sum[*it] == -1) continue;
		DFS(*it);
		if(sum[*it] >= 0) act += sum[*it];
	}
	sum[node] = act + V[node];
}

int main()
{
	int i, j, k;

	f>>N;
	for(i = 1; i <= N; i++)
		f>>V[i];
	for(i = 1; i < N; i++)
	{	f>>j>>k;
		graph[j].push_back(k);
		graph[k].push_back(j);
	}

	DFS(1);

	for(i = 1, k = -(1<<30); i <= N; i++)
		k = max(k, sum[i]);

	if(k == -1) g<<0;
	else g<<k;
    cout << 1.0*(clock()-start)/(1.0*CLOCKS_PER_SEC) << '\n';
    return 0;
}