Cod sursa(job #961147)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 11 iunie 2013 17:55:49
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <limits.h>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,v[16011];
bool ver[16011];
int s[16011],maxim=INT_MIN;

vector<int> L[16011];

void dfs(int nod){
	ver[nod]=true;
//	s[nod]=v[nod];
	int sumafii = 0;
	for(register int i=0;i<L[nod].size();i++){
		if(!ver[L[nod][i]]){
			dfs(L[nod][i]);
			sumafii+=(s[L[nod][i]]>0?s[L[nod][i]]:0);
		}
	}
	s[nod] = (sumafii +v[nod]> v[nod] ? sumafii+v[nod] : v[nod]);
	if(s[nod]>maxim)
		maxim=s[nod];
}

int main(){
	register int i,j,x,y;
	
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];
	
	for(i=1;i<n;i++){
		f>>x>>y;
		L[x].push_back(y);
		L[y].push_back(x);
	}
	
	dfs(1);
	g<<maxim;
	return 0;
}