Pagini recente » Cod sursa (job #3262626) | Cod sursa (job #3157823) | Cod sursa (job #2988243) | Cod sursa (job #635016) | Cod sursa (job #2551586)
#include <iostream>
#include <fstream>
#define Nmax 250005
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n, m, x, y;
int tt[Nmax];
int dp[20][Nmax]; //dp[i][j]-stramosul nodului j cu 2^i nivele mai sus
int main()
{
f >> n >> m;
for (int i = 1; i <= n; i++)
{
f >> dp[0][i];
}
for (int i = 1; i <= 18; i++)
{
for (int j = 1; j <= n; j++)
dp[i][j]=dp[i-1][dp[i-1][j]];
}
while (m--)
{
f >> x >> y; // stram lu x
for (int i = 0; i <= 18; i++)
if (y&(1<<i)) x=dp[i][x];
g << x << '\n';
}
return 0;
}