Cod sursa(job #591968)

Utilizator rudarelLup Ionut rudarel Data 26 mai 2011 09:25:03
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream.h>
#include <iomanip.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;

        ifstream fin(INFILE);
        ofstream fout(OUTFILE);

        fin >> n >> m;

        for ( i = 1; i <= n; i++ )
        {
            fin >> p;
            Add(i, p);
        }

        while ( m )
        {
                fin >> q >> p;
                fout << DepthFirstSearch(q, 0) << endl;
                m--;
        }

        fin.close();
        fout.close();

        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;
}