Cod sursa(job #2977218)
Utilizator | Data | 11 februarie 2023 09:35:22 | |
---|---|---|---|
Problema | Stramosi | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.46 kb |
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n,m,a,b;
int up[250001][19];
int stramos(int x,int d)
{
for(int i=18;i>=0;i--)
{
if(d&(1<<i))
x=up[x][i];
}
return x;
}
int main()
{
ios_base::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>up[i][0];
for(int j=1;j<=18;j++)
{
for(int i=1;i<=n;i++)
up[i][j]=up[up[i][j-1]][j-1];
}
while(m--)
{
cin>>a>>b;
cout<<stramos(a,b)<<'\n';
}
return 0;
}