Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define forsn(i, s, n) for(int i=s;i<int(n);i++)
  6. #define forn(i, n) forsn(i, 0, n)
  7. #define all(v) v.begin(), v.end()
  8. #define rall(v) v.rbegin(), v.rend()
  9. #define NACHO ios::sync_with_stdio(0); cin.tie(NULL);
  10.  
  11. typedef long long tint;
  12.  
  13. const int INF = 1e6;
  14. const int MOD = 1e9+7;
  15.  
  16. vector<int> adj[220000];
  17.  
  18. int succ[200001];
  19. vector<vector<int>> up (200001, vector<int> (33));
  20.  
  21. int query(int u, int k){
  22.     int ret = -1;
  23.     for(int i=30;i>=0;i--){
  24.         if(k&(1<<i)){
  25.             if(ret == -1){
  26.                 ret = up[u][i];
  27.             }else{
  28.                 ret = up[ret][i];
  29.             }
  30.         }
  31.     }
  32.     return ret;
  33. }
  34.  
  35. int main(){
  36.     NACHO;
  37.     int n, q; cin >> n >> q;
  38.     forn(i, n){
  39.         cin >> succ[i];
  40.         succ[i]--;
  41.         up[i][0] = succ[i];
  42.     }
  43.     forsn(i, 1, 31){
  44.         forn(j, n){
  45.             up[j][i] = up[up[j][i-1]][i-1];
  46.         }
  47.     }
  48.     forn(i, q){
  49.         int u, k; cin >> u >> k;
  50.         u--;
  51.         cout << query(u,k)+1 << "\n";
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement