Pagini recente » Cod sursa (job #1043519) | Cod sursa (job #3263002) | Cod sursa (job #655953) | Cod sursa (job #3248275) | Cod sursa (job #2231300)
#include <bits/stdc++.h>
using namespace std;
int n,p[100010],pred[100010],ans,j,use,a,b,dist[100010];
int main()
{
ifstream cin("cerere.in");
ofstream cout("cerere.out");
cin>>n;
for(int i=1;i<=n;i++)
cin>>pred[i];
for(int i=1;i<n;i++)
{
cin>>a>>b;
p[b]=a;
}
for(int i=1;i<=n;i++)
{
if(pred[i]) dist[i]=dist[p[i]]+1;
ans=0;
j=i;
bool u=1;
while(pred[j] && u)
{
if(dist[j]==pred[j]) ans++, u=0;
else
{
use=pred[j];
while(use--)
{
j=p[j];
}
ans++;
}
}
cout<<ans<<' ';
}
return 0;
}