Cod sursa(job #2172141)

Utilizator Te_pup_dulce_nu_plecaClorina Intergalactica Valoroasa Te_pup_dulce_nu_pleca Data 15 martie 2018 15:15:46
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <vector>
#define nmax 250001
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
vector<int> rad;
vector<int> G[nmax];
vector<int> arb;
int n,m,q,p,gasit;

void dfs(int nod)
{
    if(nod==q)
    {
        gasit=1;
        if(arb.size()<p)
            {
                fout<<0<<'\n';
                return;
            }


        fout<<arb[arb.size()-p]<<'\n';
        return;
    }
    arb.push_back(nod);
    for(int i=0;i<G[nod].size();i++)
        dfs(G[nod][i]);
    arb.pop_back();
}

int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        int a;
        fin>>a;
        G[a].push_back(i);
        if(a==0)
            rad.push_back(i);
    }

    for(int i=1;i<=m;i++)
    {
        fin>>q>>p;
         gasit=0;
        for(int j=0;j<rad.size();j++)
        {
            if(q==rad[j])
                fout<<0<<'\n';
            else
            dfs(rad[j]);
            if(gasit==1)
                break;
        }
    }

    return 0;
}