Pagini recente » Cod sursa (job #1020056) | Cod sursa (job #172509) | Cod sursa (job #263397) | Cod sursa (job #1029030) | Cod sursa (job #2751097)
#include <bits/stdc++.h>
using namespace std;
int arbore[50][250001]={0}, N, M, persoana, nr;
void creare_arbore()
{
for (int i = 1; pow(2,i) <= N; i++)
{
for (int j = 1; j <= N; j++)
{
arbore[i][j] = arbore[i - 1][arbore[i - 1][j]];
}
}
}
int cauta_stramos(int persoana, int nr)
{
int i=0;
while (nr)
{
if (nr % 2 == 1) ///verificare daca s-a ajuns la tata
{
persoana = arbore[i][persoana];
}
nr /= 2;
i++;
}
return persoana;
}
int main()
{ifstream fin("zeap.in");
ofstream fout("zeap.out");
fin>>N>>M;
for (int i = 1; i <= N; i++)
{
fin>>persoana;
arbore[0][i] = persoana;
}
creare_arbore();
for (int i = 1; i <= M; i++)
{
fin>>persoana>>nr;
fout<<cauta_stramos(persoana, nr)<<endl;
}
return 0;
}