Cod sursa(job #2185741)

Utilizator lascauLascau Ionut Sebastian lascau Data 24 martie 2018 20:20:02
Problema Stramosi Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <map>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int main()
{
    vector<int> Dad;
    map<pair<int, int>, int> Ancestor;
    int no_nodes, no_queries, x, P, Q;

    fin >> no_nodes >> no_queries;
    for (int i = 0; i < no_nodes; i++){
        fin >> x;
        Dad.push_back(x);
    }

    for (int node = 0; node < no_nodes; node++){
        int new_nod = node;
        int no_ancestors = 0;
        while (Dad[new_nod] != 0){
            no_ancestors++;
            Ancestor[make_pair(node + 1, no_ancestors)] = Dad[new_nod];
            new_nod = Dad[new_nod] - 1;
        }
    }

    while (no_queries--){
        fin >> Q >> P;
        fout << Ancestor[make_pair(Q , P)] << '\n';
    }

    return 0;
}