Pagini recente » Cod sursa (job #1625799) | Cod sursa (job #1658842) | Cod sursa (job #1665959) | Cod sursa (job #1079515) | Cod sursa (job #42184)
Cod sursa(job #42184)
#include <stdio.h>
#include <string.h>
#define MN (100001)
int N, n[MN], p[MN], cc[MN];
int c(int n1)
{
if(cc[n1] >= 0)
return cc[n1];
int n2;
cc[n1] = 0;
for(n2 = n1; n[n1]--; n2 = p[n2]);
return cc[n1] = c(n2)+1;
}
int main()
{
int i;
freopen("cerere.in", "r", stdin);
freopen("cerere.out", "w", stdout);
scanf("%d", &N);
for(i = 0; i < N; ++i)
scanf("%d", &n[i]);
for(i = 0; i < N-1; ++i) {
int n1, n2;
scanf("%d %d", &n1, &n2); --n1; --n2;
p[n2] = n1;
}
memset(cc, -1, sizeof(cc));
for(i = 0; i < N; ++i)
printf("%d ", c(i)-1);
printf("\n");
return 0;
}