Cod sursa(job #2171896)

Utilizator serban24Popovici Serban-Florin serban24 Data 15 martie 2018 14:02:04
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
#define INF 100000
#define NMAX 300005

using namespace std;

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

vector <int> mv[NMAX];
deque <int> dp[NMAX];
int v[NMAX];
queue <int> q;

void BFS(){
	int i,x;

	while(!q.empty()){
		x=q.front();
		q.pop();

		for(i=0;i<mv[x].size();i++){
			for(int j=0;j<dp[x].size();j++)
				dp[mv[x][i]].push_back(dp[x][j]);
			dp[mv[x][i]].push_front(x);

			q.push(mv[x][i]);
		}
	}
}

int main(){
	int n,m,i,p,qq;

	fin>>n>>m;

	for(i=1;i<=n;i++){
		fin>>v[i];
		if(v[i])
			mv[v[i]].push_back(i);
		else
			q.push(i);
	}

	BFS();

	for(i=1;i<=m;i++){
		fin>>qq>>p;
		if(p>dp[qq].size())
			fout<<0<<"\n";
		else
			fout<<dp[qq][p-1]<<"\n";
	}

    return 0;
}