Cod sursa(job #124730)

Utilizator razvi9Jurca Razvan razvi9 Data 19 ianuarie 2008 19:44:29
Problema Cerere Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<stdio.h>
int t[100001],a[100001],s[100001],n,i,x,y,k[100001],j,nr;
char viz[100001];

void df(int vf,int lg)
{s[lg]=vf;
 if(k[vf]) a[vf]=a[s[lg-k[vf]]]+1;
 for(int i=1;i<=n;i++)
  if(t[i]==vf) df(i,lg+1);}


int main()
{freopen("cerere.in","r",stdin);
 freopen("cerere.out","w",stdout);
 scanf("%d",&n);
 for(i=1;i<=n;i++)  scanf("%d",&k[i]);
 for(j=1;j<n;j++) {scanf("%d %d",&y,&x);t[x]=y;viz[x]=1;}
 for(i=1;i<=n;i++) if(!viz[i]) break;
 df(i,1);
 for(i=1;i<=n;i++)
  printf("%d ",a[i]);
 fclose(stdout); 
 return 0;}