Pagini recente » Cod sursa (job #3235741) | Cod sursa (job #2435422) | Cod sursa (job #1016194) | Cod sursa (job #225311) | Cod sursa (job #3206797)
#include <bits/stdc++.h>
#define NN 250005
#define MM 300005
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int n, m;
int t[NN];
int dp[25][NN];
int main()
{
fin >> n >> m;
for(int i = 1 ; i <= n ; i++)
{
fin >> t[i];
dp[0][i] = t[i];
}
int p = 1;
for(int p = 1 ; ; ++p)
{
bool good = false;
for(int i = 1 ; i <= n ; ++i)
{
dp[p][i] = dp[p - 1][dp[p - 1][i]];
if(dp[p][i] > 0)
{
good = true;
}
}
if (!good)
{
break;
}
}
int a, b;
while(m > 0)
{
fin >> a >> b;
for (int i = 0; (1 << i) <= b; ++i)
{
if ((b >> i) & 1)
{
a = dp[i][a];
}
}
fout << a << '\n';
m--;
}
return 0;
}