Pagini recente » Borderou de evaluare (job #1179551) | Borderou de evaluare (job #2013239) | Cod sursa (job #2284478) | Cod sursa (job #2306878) | Cod sursa (job #3281604)
#include <fstream>
using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
int v[100001],s[100001],r[100001];
void sbp(int i)
{
if(v[i]==0)
{
r[i]=0;
return;
}
int j=i;
for(int l=v[i];l>0;l--)
j=s[j];
if(r[j]==-1)
sbp(j);
r[i]=r[j]+1;
}
int main()
{
int n;
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;
for(int i=1;i<=n;i++)
{
if(r[i]==-1)
sbp(i);
out<<r[i]<<' ';
}
return 0;
}