Pagini recente » Cod sursa (job #1175902) | Cod sursa (job #717373) | Cod sursa (job #2577727) | Cod sursa (job #1628611) | Cod sursa (job #2144635)
#include <bits/stdc++.h>
using namespace std;
int N,M;
int Matrix[51][250003];
int LG[250003];
int main()
{
freopen("stramosi.in" , "r" ,stdin);
freopen("stramosi.out" , "w", stdout);
scanf("%d%d" ,&N , &M);
scanf("%d", &Matrix[0][1]);
for ( int i = 2 ; i <= N ; ++i)
{
scanf("%d", &Matrix[0][i]);
LG[i] = LG[i/2]+1;
}
for ( int k = 1; ( 1 << k ) <= N ; ++k)
for ( int i = 1; i<= N ; ++i)
Matrix[k][i] = Matrix[k-1][Matrix[k-1][i]];
for ( int i = 1; i <= M ; ++i)
{
int x,y;
scanf("%d%d" , &x , &y);
while(y)
{
x = Matrix[LG[y]][x];
y = y - ( 1 << LG[y]);
}
printf("%d\n", x);
}
for ( int i = 0; i <= N ; ++i)
{
for ( int j = 1; j <= N ; ++j)
cout << Matrix[i][j] <<" ";
cout << endl;
}
}