Pagini recente » Borderou de evaluare (job #672215) | Borderou de evaluare (job #1635148) | Borderou de evaluare (job #3318569) | Borderou de evaluare (job #2916675) | Cod sursa (job #3365116)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int s[100001];
int x[100001];
int k[100001];
int sol[100001];
vector<int> v[100001];
void dfs(int nod,int depth)
{
s[++depth] = nod;
if(k[nod]!=0)
sol[nod] = sol[s[depth-k[nod]]] + 1;
for(auto it:v[nod])
dfs(it , depth);
depth--;
}
int main()
{
int n,i,a,b;
fin>>n;
for(i=1;i<=n;i++)
fin>>k[i];
for(i=1;i<=n;i++)
{
fin>>a>>b;
v[a].push_back(b);
x[b]=a;
}
i=1;
while(x[i])
i++;
dfs(1,0);
for(i=1;i<=n;i++)
fout<<sol[i]<<' ';
return 0;
}