Cod sursa(job #1234451)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 27 septembrie 2014 13:51:27
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<bits/stdc++.h>
using namespace std;

struct cell
{
    int Q,P;
    int indice;
};

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

const int NMAX=250005;
const int MMAX=300005;

int n,m,sol[MMAX],viz[NMAX];
vector<int>v[NMAX];
vector<cell>t[NMAX];

inline void DFS(int x,int nr)
{
    viz[nr]=x;
    for (vector<cell>::iterator it=t[x].begin();it!=t[x].end();it++)
        sol[(*it).indice]=viz[max(0,nr-(*it).P)];
    for (vector<int>::iterator it=v[x].begin();it!=v[x].end();it++)
        DFS(*it,nr+1);
    viz[nr]=0;
}

int main()
{
    int i,x;
    cell k;
    fin>>n>>m;
    for (i=1;i<=n;i++)
        {
            fin>>x;
            v[x].push_back(i);
        }
    for (i=1;i<=m;i++)
        {
            fin>>k.Q>>k.P;
            k.indice=i;
            t[k.Q].push_back(k);
        }
    DFS(0,0);
    for (i=1;i<=m;i++) fout<<sol[i]<<"\n";
    return 0;
}