Pagini recente » Cod sursa (job #1500797) | Cod sursa (job #355450) | Cod sursa (job #996187) | Cod sursa (job #2179292) | Cod sursa (job #1518692)
#include<cstdio>
#define DIM 100005
#include<vector>
using namespace std;
int d[DIM],s[DIM],K[DIM],T[DIM],n;
vector<int> L[DIM];
void dfs(int nod,int niv){
s[niv] = nod;
if(K[nod]==0){
d[nod] = 0;
}else{
d[nod] = 1 + d[ s[niv - K[nod] ] ];
}
for(int i = 0; i < L[nod].size(); i++){
int vecin = L[nod][i];
dfs(vecin,niv+1);
}
return ;
}
int x,y;
int main(){
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for(int i=1 ; i<=n ; i++){
scanf("%d",&K[i]);
}
for(int i=1 ; i<=n ; i++){
scanf("%d%d",&x,&y);
L[x].push_back(y);
T[y]=x;
}
for(int i = 1; i <= n; i++){
if( T[i] == 0 ){
dfs(i,1);
break;
}
}
for(int i = 1; i <= n; i++){
printf("%d ",d[i]);
}
return 0;
}
// L(ea)RN
// M