Pagini recente » Cod sursa (job #1264265) | Cod sursa (job #2253464) | Cod sursa (job #2743357) | Cod sursa (job #2158802) | Cod sursa (job #2157850)
#pragma GCC optimize("03")
#include <bits/stdc++.h>
using namespace std;
int n, a[100010], ans[100010], pr[100010];
int get(int q){
if (ans[q] != -1) return ans[q];
int nod = q;
for (int i=1; i<=a[q]; i++) nod = pr[nod];
ans[q] = 1 + get(nod);
return ans[q];
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
ifstream cin ("cerere.in");
ofstream cout ("cerere.out");
cin >> n;
for (int i=1; i<=n; i++){
cin >> a[i];
if (a[i]) ans[i] = -1;
}
for (int i=1; i<n; i++){
int a, b;
cin >> a >> b;
pr[b] = a;
}
for (int i=1; i<=n; i++) cout << get(i) << " ";
return 0;
}