Cod sursa(job #189659)

Utilizator katakunaCazacu Alexandru katakuna Data 16 mai 2008 21:30:24
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>

struct nod {int inf ;nod *adr;};

int viz[20000],n,x,y,i,j,v[20000];
nod *a[20000];


void DF(int x){
nod *p;

viz[x]=1;
p=a[x];

  for(;p!=NULL;p=p->adr){

   if(!viz[p->inf]){
    DF(p->inf);

      if(v[p->inf]>0)
      v[x]+=v[p->inf];

   }


  }

}




int main(){


FILE *f=fopen("asmax.in","r");
fscanf(f,"%d ",&n);

  for(i=1;i<=n;i++)
  a[i]=NULL;


  for(i=1;i<=n;i++)
  fscanf(f,"%d",&v[i]);


  for(i=1;i<n;i++){
  fscanf(f,"%d %d",&x,&y);

   nod *p=new nod;
   p->inf=y;
   p->adr=a[x];
   a[x]=p;


   nod *q=new nod;
   q->inf=x;
   q->adr=a[y];
   a[y]=q;

  }


fclose(f);


DF(1);
int max=-17000000;

  for(i=1;i<=n;i++)
    if(v[i]>max)
    max=v[i];

FILE *g=fopen("asmax.out","w");
fprintf(g,"%d",max);
fclose(g);

return 0;
}