Cod sursa(job #715189)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 16 martie 2012 20:06:07
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>
#define NMAx 16384
#define oo (1<<30)
using namespace std;

vector <int> ARB[NMAx];
int Sol=-oo,N,Best[NMAx];

void DFS(int nod,int tata) {
	
	int vecin;
	for(int i=0;i<ARB[nod].size();i++) {
		
		vecin=ARB[nod][i];
		
		if(vecin==tata)
			continue;
		
		DFS(vecin,nod);
		
		if(Best[vecin]>0)
			Best[nod]+=Best[vecin];
		
		}
	
}
void citire() {
	
	int i,x,y;
	ifstream in("asmax.in");
	in>>N;
	
	for(i=1;i<=N;i++)
		in>>Best[i];
	
	for(i=1;i<N;i++) {
		in>>x>>y;
		
		ARB[x].push_back(y);
		ARB[y].push_back(x);
	
		}
	
	in.close();
	
}
void afis() {
	
	ofstream out("asmax.out");
	
	for(int i=1;i<=N;i++)
		Sol=max(Sol,Best[i]);
	
	out<<Sol<<'\n';
	
	out.close();
	
}
int main() {
	
	citire();
	
	DFS(1,0);
	
	afis();
	
	return 0;
	
}