Cod sursa(job #2548585)
Utilizator | Data | 16 februarie 2020 20:17:05 | |
---|---|---|---|
Problema | Stramosi | Scor | 80 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.66 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int A[250005][30];
void solve(int nod,int rang){
int aux = 0;
while(rang != 0){
if(rang%2){
nod = A[nod][aux];
}
rang /= 2;
aux++;
}
fout<<nod<<'\n';
}
int main()
{
int n,i,m,Q,P,j;
fin>>n>>m;
for(i = 1; i <= n; i++){
fin>>A[i][0];
}
for(i = 1; i <= 18; i++){
for(j = 1; j <= n; j++){
A[j][i] = A[A[j][i-1]][i-1];
}
}
for(i = 1; i <= m; i++){
fin>>Q>>P;
solve(Q,P);
}
return 0;
}