Pagini recente » Cod sursa (job #220839) | Cod sursa (job #2243985) | Cod sursa (job #2831271) | Cod sursa (job #2586075) | Cod sursa (job #203666)
Cod sursa(job #203666)
#include <stdio.h>
int n,val[1<<14];
struct nod{int val;nod* next;}*a[1<<14],*p,*q;
int i,x,y;
bool used[1<<14];
void df(int x){
nod *aux;
used[x] = 1;
for(aux=a[x]; aux!=NULL; aux=aux->next)
if(!used[aux->val])
{
df(aux->val);
if(val[aux->val]>0)
val[x]+=val[aux->val];
}
}
int main(){
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; ++i)
scanf("%d",&val[i]);
for(i=1; i<=n; ++i)
a[i] = NULL;
for(i=1; i<n; ++i){
scanf("%d %d",&x,&y);
nod *p = new nod;
p->val = y;
p->next = a[x];
a[x] = p;
nod *q = new nod;
q->val = x;
q->next = a[y];
a[y] = q;
}
df(1);
for(i=1,x=val[1]; i<=n; i++)
if(x<val[i])
x = val[i];
printf("%d", x);
return 0;
}