Cod sursa(job #50961)

Utilizator wazupPricop Mircea wazup Data 9 aprilie 2007 14:30:59
Problema Asmax Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#define NM 400
int ad[NM][NM],n,i,x,y,nr[NM];
char viz[NM];
long long a[NM],max=-2000000000;

void sume (int k)
   {  long long val;
      int i;
      viz[k]=1;
      for (i=0;i<nr[k];i++)
	if (viz[ad[k][i]]==0)
	   { sume(ad[k][i]);
	     val=a[ad[k][i]];
	     if (val>0)
		a[k]+=val;
	   }
   }



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