Pagini recente » Cod sursa (job #261654) | Cod sursa (job #2806289) | Cod sursa (job #264626) | Cod sursa (job #534627) | Cod sursa (job #651401)
Cod sursa(job #651401)
#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]]];
for(size_t 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);
}
}
for(i=1;i<=n;++i)
printf("%d ",future[i]);
return 0;
}