Cod sursa(job #51045)

Utilizator wazupPricop Mircea wazup Data 9 aprilie 2007 19:59:03
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
struct el { int val;
            el *urm;
          };
el *ad[16001],*p;
int n,i,x,y;
char viz[16001];
long a[16001],max=-2100000000;

void sume (int k)
   {  long val;
      int i;
      el *q=ad[k];
      viz[k]=1;
      while (q->val!=0)
        {  i=q->val;
           if (viz[i]==0)
              { sume(i);
                if (a[i]>0)
                  a[k]+=a[i];
              }
           q=q->urm;
        }

   }



int main()
{
FILE *fin,*fout;
fin=fopen("asmax.in","rt");
fout=fopen("asmax.out","wt");
fscanf(fin,"%d ",&n);
for (i=1;i<=n;i++)
  fscanf(fin,"%d ",&a[i]);
for (i=1;i<=n-1;i++)
  { fscanf(fin,"%d %d",&x,&y);
    p=new el;
    p->val=y;
    p->urm=ad[x];
    ad[x]=p;
    p=new el;
    p->val=x;
    p->urm=ad[y];
    ad[y]=p;
  }
sume(1);
for (i=1;i<=n;i++)
    if (a[i]>max)
       max=a[i];
fprintf(fout,"%ld\n",max);
return 0;
}