Pagini recente » Cod sursa (job #2965886) | Cod sursa (job #2374899) | Cod sursa (job #2434305) | Cod sursa (job #929712) | Cod sursa (job #3134197)
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int N, M, i, k;
int arboriGenealogici[20][250002];
int gasesteStramos(int a, int k)
{
if (k == 0)
return a;
else
{
int p = 18;
while ((1 << p) > k)
p--;
k -= (1 << p);
return gasesteStramos(arboriGenealogici[p][a], k);
}
}
int main()
{
f >> N >> M;
for (i = 1; i <= N; i++)
f >> arboriGenealogici[0][i];
for (k = 1; k <= 18; k++)
{
for (i = 1; i <= N; i++)
{
arboriGenealogici[k][i] = arboriGenealogici[k - 1][arboriGenealogici[k - 1][i]];
}
}
while (M--)
{
f >> k >> i;
g << gasesteStramos(k, i) << '\n';
}
return 0;
}