Cod sursa(job #928188)

Utilizator rudarelLup Ionut rudarel Data 26 martie 2013 12:20:04
Problema Stramosi Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.16 kb
#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;
}