Cod sursa(job #1755941)

Utilizator irinapatularuPatularu Irina irinapatularu Data 11 septembrie 2016 14:46:41
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>

#define NMAX 16001
using namespace std;

int n;
int weights[NMAX];
int visited[NMAX], solutie[NMAX];
vector< list< int> > adList(NMAX);
int maxValue;

void dfs(int node){
	visited[node] = 1;
	solutie[node] = weights[node];
	list<int> :: iterator it = adList[node].begin();
	while(it != adList[node].end()){
		int neigh = *it;
		if(visited[neigh] == 0){
			dfs(neigh);
			if(solutie[neigh] > 0)
				solutie[node] += solutie[neigh];
			if(solutie[node] > maxValue)
				maxValue = solutie[node];
		}
		it ++;
	}
}

int main(){	
	int a, b;
	ifstream f("asmax.in");
	ofstream g("asmax.out");
	f >> n;
	for(int i = 1; i <= n; i++)
		f >> weights[i];

	maxValue = weights[1];

	for(int i = 0; i < n - 1; i++){
		f >> a >> b;
		adList[a].push_back(b);
		adList[b].push_back(a);
	}
	f.close();

	dfs(1);
	g << maxValue;
	g.close();

	return 0;
}