Pagini recente » Cod sursa (job #3361851) | Cod sursa (job #3361999) | Cod sursa (job #3362088) | Cod sursa (job #3362062) | Cod sursa (job #3362090)
#include <fstream>
using namespace std;
ifstream cin("cerere.in");
ofstream cout("cerere.out");
int P[100005];
int X[100005];
int R[100005];
void dp(int poz) {
if (X[poz]!=0 && R[poz]==-1) {
int val=X[poz], mpoz=poz;
for (int i=1; i<=val; i++) poz=P[poz];
dp(poz);
R[mpoz]=R[poz]+1;
}
else if (R[poz]==-1) R[poz]=0;
}
int main() {
int n;
cin>>n;
for (int i=1; i<=n; i++) {
cin>>X[i];
R[i]=-1;
}
for (int i=1; i<=n-1; i++) {
int x, y;
cin>>x>>y;
P[y]=x;
}
for (int i=1; i<=n; i++) {
if (R[i]==-1) dp(i);
cout<<R[i]<<" ";
}
}