Pagini recente » Cod sursa (job #2682166) | Cod sursa (job #484060) | Cod sursa (job #379950) | Cod sursa (job #2645630) | Cod sursa (job #2564668)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
const int N_MAX = 1e5 + 1;
const int LOG_N_MAX = 16;
int N, K[N_MAX], DP[LOG_N_MAX + 1][N_MAX];
int main()
{
fin >> N;
for(int i = 1; i <= N; ++i)
fin >> K[i];
for(int A, B, i = 1; i < N; ++i)
fin >> A >> B,
DP[0][B] = A;
for(int k = 1; k <= LOG_N_MAX; ++k)
for(int i = 1; i <= N; ++i)
DP[k][i] = DP[k - 1][DP[k - 1][i]];
for(int i = 1; i <= N; ++i)
{
int ans = 0;
int node = i;
while(K[node] != 0)
{
int aux = node;
for(int j = 0; K[node] >> j; ++j)
if(1 & (K[node] >> j))
aux = DP[j][aux];
node = aux;
++ans;
}
fout << ans << ' ';
}
}