Cod sursa(job #928217)

Utilizator rudarelLup Ionut rudarel Data 26 martie 2013 12:39:28
Problema Stramosi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 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);
 
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));
                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)
{
        PNODE x = NULL;
 
        if ( p && graph[vertex] ){ p--; return DepthFirstSearch(graph[vertex]->info);}
        return vertex;
}