Cod sursa(job #748211)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 12 mai 2012 18:28:55
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <vector>

#define pb push_back

using namespace std;

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

const int N=17000;

int v[N],sol[N],answer,n;
bool vis[N];
vector <int> edge[N];

void read(){
	int i,x,y;
	in>>n;
	for(i=1;i<=n;++i){
		in>>v[i];
	}
	for(i=1;i<n;++i){
		in>>x>>y;
		edge[x].push_back(y);
		edge[y].push_back(x);
	}
}

void df(int x){
	int neighbour,i,s=0;
	vis[x]=true;
	for(i=0;i<edge[x].size();++i){
		neighbour=edge[x][i];
		if(vis[neighbour]==false){
			df(neighbour);
		}
		if(sol[neighbour]>0)
			s+=sol[neighbour];
	}
	sol[x]=s+v[x];
	if(sol[x]>answer)
		answer=sol[x];
}

void solve(){
	df(1);
	out<<answer;
}

int main(){
	read();
	solve();
	return 0;
}