Pagini recente » Cod sursa (job #3200130) | Cod sursa (job #1899242) | Cod sursa (job #69683) | Cod sursa (job #639112) | Cod sursa (job #651406)
Cod sursa(job #651406)
#include<cstdio>
#include<vector>
#define NMAX 100002
using namespace std;
int n,m,x,y,K[NMAX],i,j,VIZ[NMAX],future[NMAX],S[NMAX];
vector<int>G[NMAX];
void cerere (int n ,int niv){
S[niv]=n;
if(K[n])
future[n]=future[S[niv-K[n]]]+1;
for(int i=0;i<G[n].size();++i)
cerere(G[n][i],niv+1);
}
int main (){
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&K[i]);
for(i=1;i<n;i++){
scanf("%d%d",&x,&y);
G[x].push_back(y);
VIZ[y]=1;
}
for(i=1;i<=n;++i){
if(VIZ[i]==0){
cerere(i,1);
break;
}
}
for(i=1;i<=n;++i)
printf("%d ",future[i]);
return 0;
}