Pagini recente » Cod sursa (job #1387970) | Cod sursa (job #2333548) | Cod sursa (job #2499175) | Cod sursa (job #1093845) | Cod sursa (job #1774885)
#include <cstdio>
#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 *fin = fopen("cerere.in","r");
fscanf(fin,"%d",&n);
for (i=1;i<=n;i++)
p[i]=NULL;
for (i=1;i<=n;i++)
fscanf(fin,"%d",&k[i]);
for (i=1;i<n;i++){
fscanf(fin,"%d %d",&x,&y);
t[y]=x;
q=new nod;
q->v=y;
q->urm=p[x];
p[x]=q;
}
for (i=1;i<=n;i++)
if (t[i]==0) {
r=i;
break;
}
parc(r,1);
FILE *fout = fopen("cerere.out","w");
for (i=1;i<=n;i++)
fprintf(fout,"%d ",rez[i]);
return 0;
}