Pagini recente » Cod sursa (job #8) | Cod sursa (job #734589) | Cod sursa (job #1529531) | Cod sursa (job #1010654) | Cod sursa (job #331298)
Cod sursa(job #331298)
#include <stdio.h>
#define dim 100001
int n, k[dim], p[dim], in[dim], rad, q[dim], sol[dim];
void dfs(int node, int lvl) {
int i;
q[lvl]=node;
if (k[node]) sol[node]=sol[q[lvl-k[node]]]+1;
else sol[node]=0;
for (i=1; i<=n; ++i)
if (p[i]==node) dfs(i, lvl+1);
}
int main() {
int i, a, b;
freopen("cerere.in", "r", stdin);
freopen("cerere.out", "w", stdout);
scanf("%d\n", &n);
for (i=1; i<=n; ++i) scanf("%d ", &k[i]);
for (i=1; i<n; ++i) {
scanf("%d %d\n", &a, &b);
p[b]=a;
++in[b];
}
for (rad=1; rad<=n && in[rad]; ++rad) ;
dfs(rad, 1);
for (i=1; i<=n; ++i) printf("%d ", sol[i]);
printf("\n");
return 0;
}