Pagini recente » Cod sursa (job #891647) | Cod sursa (job #1091996) | Cod sursa (job #314696) | Cod sursa (job #2356910) | Cod sursa (job #3134205)
#include <fstream>
using namespace std;
ifstream inputFile("stramosi.in");
ofstream outputFile("stramosi.out");
void buildMatrix(int n, int ancestors[250001][22])
{
for (int j = 1; j <= 21; j++)
for (int i = 1; i <= n; i++)
ancestors[i][j] = ancestors[ancestors[i][j - 1]][j - 1];
}
void query(int z, int &k, int ancestors[250001][22])
{
for (int j = 21; j >= 0; j--)
if ((z >> j) & 1)
k = ancestors[k][j];
}
int main()
{
int n, m, z, k, i;
inputFile >> n >> m;
int ancestors[250001][22];
for (i = 1; i <= n; i++)
inputFile >> ancestors[i][0];
buildMatrix(n, ancestors);
for (i = 1; i <= m; i++)
{
inputFile >> k >> z;
query(z, k, ancestors);
outputFile << k << '\n';
}
return 0;
}