Cod sursa(job #742105)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 28 aprilie 2012 15:11:26
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#include<list>
#include<stdio.h>
#define dim 16010
using namespace std;

int i,x,n,V[dim],maxim=-2000000,y,Fr[dim];

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

list<int>L[dim];

void dfs(int z){
	Fr[z]=1;
	list<int>::iterator it;
	for(it=L[z].begin();it!=L[z].end();it++){
		if(!Fr[*it]){ 
			dfs(*it);
			if(V[*it]>0)
				V[z]+=V[*it];
		}
	}
	if(V[z]>maxim)
		maxim=V[z];
}

int main(){
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&V[i]);
	for(i=1;i<n;i++){
		fscanf(f,"%d%d",&x,&y);
		L[x].push_back(y);
		L[y].push_back(x);
	}
	for(i=1;i<=n;i++){
		if(!Fr[i]){
			dfs(i);
		}
	}
	fprintf(g,"%d",maxim);
	return 0;
}