Pagini recente » Cod sursa (job #580662) | Cod sursa (job #2410643) | Cod sursa (job #3179182) | Cod sursa (job #990704) | Cod sursa (job #139227)
Cod sursa(job #139227)
#include <stdio.h>
#define DIM 100001
struct nod {
int v;
nod *urm;
};
int k[DIM];
int t[DIM];
int n,i,r,x,y;
int s[DIM];
int rez[DIM];
nod *p[DIM],*q;
void parc(int x, int niv){
nod *q;
s[niv]=x;
if (k[x]==0) {
rez[x]=0;
} else {
rez[x]=rez[s[niv-k[x]]]+1;
}
q=p[x];
while (q!=NULL) {
parc(q->v, niv+1);
q=q->urm;
}
}
int main(){
FILE *f = fopen("cerere.in","r");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
p[i]=NULL;
for (i=1;i<=n;i++)
fscanf(f,"%d",&k[i]);
for (i=1;i<n;i++){
fscanf(f,"%d %d",&x,&y);
t[y]=x;
q=new nod;
q->v=y;
q->urm=p[x];
p[x]=q;
}
fclose(f);
for (i=1;i<=n;i++)
if (t[i]==0) {
r=i;
break;
}
/* for (i=1;i<=n;i++)
t[i]==0;*/
parc(r,1);
FILE *g = fopen("cerere.out","w");
for (i=1;i<=n;i++)
fprintf(g,"%d ",rez[i]);
fclose(g);
return 0;
}