Cod sursa(job #1312179)

Utilizator BLz0rDospra Cristian BLz0r Data 8 ianuarie 2015 23:13:24
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <vector>
using namespace std;

#define Nmax 16001
#define inf 0x3f3f3f3f

FILE *f=fopen ("asmax.in","r");
FILE *g=fopen ("asmax.out","w");

vector <int> G[Nmax];

int val[Nmax],sol=-inf;
bool ap[Nmax];

void DFS (int nod){
	ap[nod]=1;
	vector <int> :: iterator it;
	
	for (it=G[nod].begin(); it < G[nod].end(); ++it){
		if (!ap[*it]){
			DFS (*it);
			if (val[*it]>0){
				val[nod]+=val[*it];
			}
		}
	}
}

int main(){
	int N,x,y;
	
	fscanf (f,"%d",&N);
	
	for (int i=1;i<=N;++i){
		fscanf (f,"%d",&val[i]);
	}
	
	for (int i=1;i<N;++i){
		fscanf (f,"%d%d",&x,&y);
		G[x].push_back (y);
		G[y].push_back (x);
	}
	
	DFS (1);
	
	for (int i=1;i<=N;++i){
		if (val[i]>sol) sol=val[i];
	}
	
	fprintf (g,"%d",sol);
	
	return 0;
}