Pagini recente » Cod sursa (job #2118817) | Cod sursa (job #1806097) | Cod sursa (job #2153788) | Cod sursa (job #350920) | Cod sursa (job #1268811)
#include <cstdio>
#include <vector>
using namespace std;
vector<int> g[100001];
int k[100001], next[100001], father[100001];
int main()
{
FILE *in = fopen("cerere.in", "r");
FILE *out = fopen("cerere.out", "w");
int n;
fscanf(in, "%d", &n);
for (int i = 1; i <= n; ++i)
fscanf(in, "%d", &k[i]);
for (int x, y, i = 1; i < n; ++i)
{
fscanf(in, "%d%d", &x, &y);
father[y] = x;
}
for (int i = 1; i <= n; ++i)
{
next[i] = i;
for (int j = 1; j <= k[i]; ++j)
next[i] = father[next[i]];
}
for (int i = 1; i <= n; ++i)
{
int x = i;
int l = 0;
while (k[x] > 0)
{
l++;
x = next[x];
}
if (i > 1)
fprintf(out, " %d", l);
else
fprintf(out, "%d", l);
}
fprintf(out, "\n");
return 0;
}