Pagini recente » Cod sursa (job #2221829) | Cod sursa (job #1372441) | Cod sursa (job #2706737) | Cod sursa (job #2284642) | Cod sursa (job #1794015)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
const int NMax = 100005;
int v[NMax];
int D[17][NMax];
int main() {
ios::sync_with_stdio();
fin.tie(NULL);
int n;
fin >> n;
for(int i = 1; i <= n; i++) fin >> v[i];
for(int i = 1; i < n; i++) {
int a, b;
fin >> a >> b;
D[0][b] = a;
}
for(int i = 1; i <= 17; i++) {
for(int j = 1; j <= n; j++) {
D[i][j] = D[i - 1][D[i - 1][j]];
}
}
for(int i = 1; i <= n; i++) {
int node = i;
int newNode;
int k = 0;
while(v[node] != 0) {
k++;
for(int j = 0; j <= 17; j++) {
if((v[node] >> j) % 2 == 1) {
newNode = D[j][node];
}
}
node = newNode;
}
fout << k << " ";
}
return 0;
}