Pagini recente » Cod sursa (job #791124) | Cod sursa (job #1508163) | Borderou de evaluare (job #2247441) | Cod sursa (job #647909) | Cod sursa (job #588911)
Cod sursa(job #588911)
#include<vector>
#include<stdio.h>
#include<algorithm>
#define pb push_back
using namespace std;
vector<int> g[101010];
int stiv[101010],k;
int rez[101010],c[101010],N,x,y,viz[101010];
using namespace std;
int df(int x)
{stiv[++k]=x;
if(c[x])
rez[x]=rez[stiv[k-c[x]]]+1;
for(int i=0;i<g[x].size();++i)
{
df(g[x][i]);
}
--k;
}
int main()
{
freopen("cerere.in","r",stdin);
freopen("cerere.out","w",stdout);
scanf("%d",&N);
for(int i=1;i<=N;++i)
scanf("%d",&c[i]);
for(int i=1;i<N;++i)
{
scanf("%d%d",&x,&y);
g[x].pb(y);
viz[y]=1;
}
for(int i=1;i<=N;++i)
if(!viz[i])
{
df(i);
}
for(int i=1;i<=N;++i)
printf("%d ",rez[i]);
return 0;
}