Cod sursa(job #206565)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 7 septembrie 2008 18:26:44
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<stdio.h>
#include<string.h>
struct nod{
	int inf;
	nod *adr;
};
int s[20000],n,x,y,i,j,v[20000];
nod *a[20000];
void funct(int x){
	nod *p;
	s[x]=1;
	p=a[x];
	for(;p!=NULL;p=p->adr){
		if(!s[p->inf]){
			funct(p->inf);
			if(v[p->inf]>0)
				v[x]+=v[p->inf];
		}
	}
}
int main(){
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		a[i]=NULL;
	for(i=1;i<=n;i++)
		scanf("%d",&v[i]);
	for(i=1;i<n;i++){
		scanf("%d%d",&x,&y);
		nod *p=new nod;
		p->inf=y;
		p->adr=a[x];
		a[x]=p;
		nod *q=new nod;
		q->inf=x;
		q->adr=a[y];
		a[y]=q;
	}
	funct(1);
	int max=-1700000;
	for(i=1;i<=n;i++)
		if(v[i]>max)
			max=v[i];
	printf("%d",max);
	fclose(stdin);
	fclose(stdout);
	return 0;
}