Pagini recente » Cod sursa (job #1081765) | Cod sursa (job #915892) | Cod sursa (job #2814200) | Cod sursa (job #2357541) | Cod sursa (job #342322)
Cod sursa(job #342322)
#include<stdio.h>
#define DIM 16005
struct nod
{
int x;
nod *urm;
} *lst[DIM];
int b[DIM],v[DIM];
void add (int a,int b)
{
nod *p=new nod;
p->x=b;
p->urm=lst[a];
lst[a]=p;
}
void df (int k)
{
v[k]=1;
for(nod *p=lst[k];p;p=p->urm)
if(v[p->x]==0)
{
df(p->x);
if(b[p->x]>0)
b[k] += b[p->x];
}
}
int main ()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
int i,x,y,n;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&b[i]);
for(i=1;i<n;++i)
scanf("%d%d",&x,&y),add(x,y),add(y,x);
df(1);
int max=-2000000000;
for(i=1;i<=n;++i)
if(max<b[i])
max=b[i];
printf("%d",max);
return 0;
}