Pagini recente » Cod sursa (job #617765) | Cod sursa (job #689552) | Cod sursa (job #265033) | Cod sursa (job #2658360) | Cod sursa (job #1361002)
#include <fstream>
#define DIM 250005
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi. out");
int n, m, nod, rang;
int stramosi[20][DIM], pow[DIM];
int search(int rang, int nod){
if(rang > n)
{
return 0;
}
if(rang == 0)
{
return nod;
}
return search(rang - (1 << pow[rang]), stramosi[pow[rang]][nod]);
}
void citire(){
fin >> n >> m;
for(int i = 1 ;i <= n; i ++)
{
fin >> stramosi[0][i];
}
}
void solve(){
for(int i = 1; (1 << i) <= n; i ++)
{
for(int j = 1 ;j <= n; j ++)
{
stramosi[i][j] = stramosi[i - 1][stramosi[i - 1][j]];
}
}
pow[1] = 0;
for(int i = 2; i <= n; i ++)
{
pow[i] = pow[i / 2] + 1;
}
for(int i = 1; i <= m; i ++)
{
fin >> nod >> rang;
fout << search(rang, nod) << '\n';
}
}
int main()
{
citire();
solve();
return 0;
}