Pagini recente » Cod sursa (job #2492919) | Cod sursa (job #1022203) | Cod sursa (job #1942179) | Cod sursa (job #820441) | Cod sursa (job #928188)
Cod sursa(job #928188)
#include <stdio.h>
#define INFILE "stramosi.in"
#define OUTFILE "stramosi.out"
#define MAX 250001
typedef struct node {
long int info;
node * next;
} NODE, * PNODE;
PNODE graph[MAX];
long int n, p;
void Add(long int i, long int j);
long int DepthFirstSearch(long int vertex, long int number);
int main()
{
long int q = 0, i = 0, m = 0;
freopen(INFILE,"r",stdin);
freopen(OUTFILE,"w",stdout);
scanf("%ld %ld",&n,&m);
for ( i = 1; i <= n; i++ )
{
scanf("%ld",&p);
Add(i, p);
}
while ( m )
{
scanf("%ld %ld",&q,&p);
printf("%ld\n",DepthFirstSearch(q, 0));
m--;
}
return 0;
}
void Add(long int i, long int j)
{
PNODE x = new NODE;
x->info = j;
x->next = graph[i];
graph[i] = x;
}
long int DepthFirstSearch(long int vertex, long int number)
{
PNODE x = NULL;
if ( number != p && graph[vertex] ) return DepthFirstSearch(graph[vertex]->info, number + 1);
return vertex;
}