Pagini recente » Cod sursa (job #3172924) | Cod sursa (job #1727951) | Cod sursa (job #832463) | Cod sursa (job #2415378) | Cod sursa (job #477455)
Cod sursa(job #477455)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
vector<long> a, t;
long n, k, i, j, x, y;
long Rez(long i, long j);
int main()
{
fin >> n;
a.resize(n+1); t.resize(n+1);
for (i = 1; i <= n; ++i)
fin >> a[i];
for (i = 1; i <= n; i++)
{
fin >> x >> y;
t[y] = x;
}
fin.close();
for ( i = 1; i <= n; ++i)
if (a[i] == 0) fout << '0' << ' ';
else fout << Rez(i, a[i]) << ' ';
fout.close();
return 0;
}
long Rez(long i, long j)
{
if (!a[i]) return 0;
long k = j, ii = i;
while (t[ii] && k)
{
ii = t[ii];
k--;
}
return Rez(ii, j) + 1;
}