Cod sursa(job #13761)

Utilizator megabyteBarsan Paul megabyte Data 7 februarie 2007 15:00:03
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define INF "asmax.in"
#define OUF "asmax.out"
#define NMAX 16384
struct nod
{
	int x,y;
}a[NMAX];
/*void qsort(int p,int q)
{
	int i,j,piv;
	nod aux;
	i=p;j=q;piv=a[i].dip;
	do{
		while(piv>a[j].dip) j--;
		while(piv<a[i].dip) i++;
		if(i<=j)
		{
			aux=a[i];a[i]=a[j];a[j]=aux;
			i++;j--;
		}
	}while(i<j);
	if(i<q) qsort(i,q);
	if(j>p) qsort(p,j);
}*/
int main()
{
    int n,max,i,x,y,s[NMAX];
    FILE *in,*out;
    in=fopen(INF,"r");
    out=fopen(OUF,"w");
    fscanf(in,"%d",&n);
    for(i=1;i<=n;i++) fscanf(in,"%d",&s[i]);
    for(i=1;i<n;i++) fscanf(in,"%d %d",&a[i].x,&a[i].y);
    for(i=n-1;i>0;i--)
    	if(s[a[i].x]+s[a[i].y]>s[a[i].x]) s[a[i].x]+=s[a[i].y];
    max=-16777216;
    for(i=1;i<=n;i++) if(s[i]>max) max=s[i];
    fprintf(out,"%d",max);
    fclose(in);fclose(out);
    return 0;
}