Cod sursa(job #1755798)

Utilizator irinapatularuPatularu Irina irinapatularu Data 11 septembrie 2016 01:55:09
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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];

	for(int i = 1; i <= adList[node].size(); i++){
		if(visited[i] == 0){
			dfs(i);
			if(solutie[i] > 0)
				solutie[node] += solutie[i];
			if(solutie[node] > maxValue)
				maxValue = solutie[node];
		}
	}
}

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;
}