Pagini recente » Cod sursa (job #1872885) | Cod sursa (job #2053258) | Cod sursa (job #1151384) | Cod sursa (job #92685) | Cod sursa (job #2135074)
#include <bits/stdc++.h>
#define Nmax 100001
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int k[Nmax];
int ans[Nmax];
int t[Nmax];
int stk[Nmax];
list <int> arb[Nmax];
void DFS(int x, int lvl)
{
stk[lvl]=x;
if(k[x]) ans[x]=1+ans[stk[lvl-k[x]]];
for(const auto &it:arb[x])
DFS(it,lvl+1);
}
int main()
{
int n,i,j,d;
f>>n;
for(i=1;i<=n;i++)
f>>k[i];
for(d=1;d<n;d++)
{
f>>i>>j;
t[j]=i;
arb[i].push_back(j);
}
int root=1;
for(;t[root];root++);
DFS(root,1);
for(i=1;i<=n;i++)
g<<ans[i]<<' ';
return 0;
}