Cod sursa(job #1419201)

Utilizator ArkinyStoica Alex Arkiny Data 15 aprilie 2015 00:15:58
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
#include<iostream>
using namespace std;

#define MAX 250001

struct Node
{
	Node *next;
	int value;
}*A[250001];

int V[MAX][18],N;

void add_to_node(int nr,int val)
{
  if(val!=0)
  {
	Node *p=new Node;
	p->value=val;
	p->next=A[nr];
	A[nr]=p;
  }
}

void DFS()
{
	int i,j;
	for(i=0;i<=N;i++)
	{
		for(j=0;j<=N;j++)
			if(j==0)
				V[i][j]=i;
			else if(j==1)
			{
				if(A[i])
					V[i][j]=A[i]->value;
				else
					V[i][j]=0;
			}
			else
				V[i][j]=V[V[i][1]][j-1];
		   
		 
		   
			
	}
}

int main()
{


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

	int M,v,q,p;
	in>>N>>M;
	for(int i=1;i<=N;i++)
	{
	   in>>v;
	   add_to_node(i,v);
	}
	DFS();
	for(int i=1;i<=M;i++)
	{
		in>>q>>p;
		out<<V[q][p]<<'\n';
	}

	return 0;
}