Pagini recente » Cod sursa (job #254181) | Cod sursa (job #918651) | Cod sursa (job #1271334) | Cod sursa (job #1559453) | Cod sursa (job #3038232)
#include <fstream>
using namespace std;
ifstream cin ("stramosi.in");
ofstream cout ("stramosi.out");
const int N = 3e5;
int dp[N + 1][33], lg[N + 1];
int n, m, nod, k;
int main()
{
cin >> n >> m;
for (int i = 1; i <= n && cin >> dp[i][0]; ++i);
for (int i = 2; i <= n; ++i)
lg[i] = lg[i >> 1] + 1;
for (int i = 1; i <= lg[n]; ++i)
for (int j = 1; j <= n; ++j)
dp[j][i] = dp[dp[j][i - 1]][i - 1];
for (int i = 1; i <= m && cin >> nod >> k; ++i)
{
for (int j = lg[k]; j >= 0; --j)
if (k & (1 << j))
nod = dp[nod][j];
cout << nod << '\n';
}
return 0;
}