Cod sursa(job #129255)

Utilizator razvi9Jurca Razvan razvi9 Data 28 ianuarie 2008 20:37:05
Problema Asmax Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
int a[16000][2],n,v[16001],s[16001],i,viz[16001],max;
int df(int vf)
{viz[vf]=1;
 s[vf]=v[vf];
 int val;
 for(int i=1;i<n;i++)
  if(a[i][0]==vf){
   if(!viz[a[i][1]])
   {val=df(a[i][1]);
    if(val>0) s[vf]=s[vf]+val;}}
  else
   if(a[i][1]==vf){
    if(!viz[a[i][0]])
    {val=df(a[i][0]);
     if(val>0) s[vf]=s[vf]+val;}}
 return s[vf];}

int main()
{freopen("asmax.in","r",stdin);
 freopen("asmax.out","w",stdout);
 scanf("%d",&n);
 for(i=1;i<=n;i++) scanf("%d",&v[i]);
 for(i=1;i<n;i++) scanf("%d %d",&a[i][0],&a[i][1]);
 df(1);
 max=s[1];
 for(i=2;i<=n;i++)
  if(max<s[i]) max=s[i];
 printf("%d\n",max);
 return 0;}