Pagini recente » Cod sursa (job #2709220) | Cod sursa (job #1535903) | Cod sursa (job #3271953) | Cod sursa (job #2856365) | Cod sursa (job #2599188)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int cer[MAXN], stramos[MAXN][30];
int main()
{
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int n;
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> cer[i];
for(int i = 1; i < n; ++i){
int x, y;
fin >> x >> y;
stramos[y][0] = x;
}
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= 20; ++j){
stramos[i][j] = stramos[stramos[i][j - 1]][j - 1];
}
}
for(int i = 1; i <= n; ++i){
int crt = i, cnt = 0;
while(cer[crt] > 0){
int niv = cer[crt], pas = 20;
while(pas > -1){
if((1 << pas) <= niv){
crt = stramos[crt][pas];
niv -= (1 << pas);
}
pas--;
}
cnt++;
}
fout << cnt << " ";
}
return 0;
}