Pagini recente » Cod sursa (job #1770320) | Cod sursa (job #1192804) | Cod sursa (job #2883718) | Cod sursa (job #2067266) | Cod sursa (job #1895449)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
const int NMax=100005;
int N,A[NMax],F[NMax],Sol[NMax];
void Read()
{
fin>>N;
for (int i=1;i<=N;++i)
{
fin>>A[i];
}
for (int i=1;i<N;++i)
{
int A,B;
fin>>A>>B;
F[B]=A;
}
}
void stramos(int x)
{
int y;
y=F[x];
for(int i=1;i<A[x];++i)
{
y=F[y];
}
if(A[y]!=0)
{
stramos(A[y]);
}
Sol[x]=Sol[A[y]]+1;
A[y]=0;
}
void Solve()
{
for(int i=2;i<=N;++i)
{
if(A[i]==0)
{
Sol[i]=0;
}
else
{
stramos(i);
}
}
Sol[1]=0;
for(int i=1;i<=N;++i)
{
fout<<Sol[i]<<" ";
}
fout<<"\n";
}
int main()
{
Read();
Solve();
return 0;
}