Cod sursa(job #203666)

Utilizator mordredSimionescu Andrei mordred Data 18 august 2008 13:25:49
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#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;
}