Pagini recente » Cod sursa (job #2116188) | Cod sursa (job #2735311) | Cod sursa (job #2503837) | Cod sursa (job #258559) | Cod sursa (job #3281611)
#include <fstream>
using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
int v[100001],s[100001],d[100001],r[100001];
int n;
void sbp(int i,int dr)
{
d[dr]=i;
if(v[i]==0)
r[i]=0;
else
r[i]=r[d[dr-v[i]]]+1;
for(int j=1;j<=n;j++)
if(s[j]==i)
sbp(j,dr+1);
}
int main()
{
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
for(int i=1;i<n;i++)
{
int a,b;
in>>a>>b;
s[b]=a;
r[i]=-1;
}
r[n]=-1;
int l=1;
while(s[l])
l++;
sbp(l,1);
for(int i=1;i<=n;i++)
out<<r[i]<<' ';
return 0;
}