Cod sursa(job #1377271)

Utilizator tweetyMarinescu Ion tweety Data 5 martie 2015 20:58:25
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;

int main()
{
    ifstream in("stramosi.in");
    ofstream out("stramosi.out");
    int N, M;
    int Q, P;
    int** Ancestors;

    in >> N >> M;

    Ancestors = new int*[N + 1];
    for (int x, i = 1; i <= N; ++i)
    {
        Ancestors[i] = new int[N + 1];

        in >> x;
        Ancestors[i][1] = x;
    }

    for (int i = 1; i <= N; ++i)
        for (int j = 2; j <= N; ++j)
            Ancestors[i][j] = Ancestors[i][j - 1] == 0 ? 0 : Ancestors[Ancestors[i][j - 1]][1];

    for (int i = 1; i <= M; ++i)
    {
        in >> Q >> P;
        out << Ancestors[Q][P] << "\n";
    }

    for (i = 1; i <= N; ++i)
        delete[] Ancestors[i];

    delete[] Ancestors;
    in.close();
    out.close();

    return 0;
}