Cod sursa(job #81662)

Utilizator coderninuHasna Robert coderninu Data 3 septembrie 2007 18:02:59
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <vector>
#define infile "stramosi.in"
#define outfile "stramosi.out"

using namespace std;

vector < vector <int> >v;
vector <int>c;
long n, m, i, temp, q, p;
FILE *fin=fopen(infile, "r"), *fout=fopen(outfile, "w");

int main()
{
 fscanf(fin, "%ld %ld\n", &n, &m);
 for (i=1; i<=n; i++)
     {
      fscanf(fin, "%ld ", &temp);
      c.push_back(temp);
     }
 for (i=0; i<n; i++)
     {
      vector <int>aux;
      temp=i;
      aux.push_back(0);
      while (c[temp])
          {
           aux.push_back(c[temp]);
           temp=c[temp]-1;
           aux[0]++;
          }
      v.push_back(aux);
     }
 for (i=1; i<=m; i++)
     {
      fscanf(fin, "%ld %ld\n", &q, &p);
      if (v[q-1][0]>=p) fprintf(fout, "%ld\n", v[q-1][p]);
      else fprintf(fout, "0\n");
     }
 fclose(stdin);
 fclose(stdout);
 return 0;
}