Cod sursa(job #1367213)

Utilizator Denisa13Stefan Denisa Denisa13 Data 1 martie 2015 18:06:19
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int stiva[25005], index[25005], rang[250005], raspuns[350005], viz[250005];
vector <int> G[250005], qind[250005];

void query(int nod)
{
    for(int i=0;i<qind[nod].size();i++)
        if(index[nod]>=rang[qind[nod][i]])
            raspuns[qind[nod][i]]=stiva[index[nod]-rang[qind[nod][i]]];
        else raspuns[qind[nod][i]]=0;
}

void dfs(int nod)
{
    stiva[index[nod]]=nod;
    query(nod);
    for(int i=0;i<G[nod].size();i++)
    {
       index[G[nod][i]]=index[nod]+1;
       dfs(G[nod][i]);
    }
}

int main()
{
    int i,j,x,n,m,q;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>x;
        G[x].push_back(i);
    }
    for(i=1;i<=m;i++)
    {
        f>>q>>rang[i];
        qind[q].push_back(i);
    }
    dfs(0);
    for(i=1;i<=m;i++)
        g<<raspuns[i]<<'\n';
    return 0;
}