Cod sursa(job #3240004)

Utilizator paull122Paul Ion paull122 Data 11 august 2024 17:23:19
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>

#define VMAX 100
#define NMAX 300000
#define LOG 21
#define INF (int)(10e8)
#define MOD 30011
#define ll   long long int


#define NIL 0

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

int n,m;
vector<int> q[NMAX+1];
vector<int> adj[NMAX+1];
int t[NMAX+1];
int res[NMAX+1],p[NMAX+1];
int depth[NMAX+1];

void dfs(int x,int d)
{
    depth[d]=x;
    for(int i : q[x])
    {
        if(d-p[i] > 0)
        {
            res[i] = depth[d-p[i]];
        }
        else
        {
            res[i] = 0;
        }
    }
    for(int i : adj[x])
    {
        dfs(i,d+1);
    }
}
int main()
{
    fin >> n >> m;
    for(int i=1;i<=n;i++)
    {
        fin >> t[i];
        adj[t[i]].push_back(i);
    }
    for(int i=1;i<=m;i++)
    {
        int x,y;
        fin >> x >> y;
        q[x].push_back(i);
        p[i]=y;
    }
    dfs(0,0);
    for(int i=1;i<=m;i++)
    {
        fout << res[i] << "\n";
    }
}