Cod sursa(job #1636129)

Utilizator BrandonChris Luntraru Brandon Data 6 martie 2016 22:46:05
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>
#include <algorithm>

#define NMax 250005
#define LogMaxN 18
using namespace std;

ifstream cin("stramosi.in");
ofstream cout("stramosi.out");

vector <int> G[NMax];

int ancestor[LogMaxN][NMax], n, q;
bool used[NMax];

int main() {
    cin >> n >> q;

    for(int i = 1; i <= n; ++i) {
        cin >> ancestor[0][i];
    }

    for(int i = 1; i < LogMaxN; ++i) {
        for(int j = 1; j <= n; ++j) {
            ancestor[i][j] = ancestor[i - 1][ancestor[i - 1][j]];
        }
    }

    for(int i = 1; i <= q; ++i) {
        int node, val;
        cin >> node >> val;

        for(int i = 0; i < LogMaxN; ++i) {
            if(val & (1 << i)) {
                node = ancestor[i][node];
            }
        }

        cout << node << '\n';
    }
    return 0;
}