Pagini recente » Cod sursa (job #824782) | Cod sursa (job #1413684) | Cod sursa (job #2563522) | Cod sursa (job #13761)
Cod sursa(job #13761)
#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;
}