Pagini recente » Cod sursa (job #1141386) | Cod sursa (job #460900) | Cod sursa (job #2797678) | Cod sursa (job #3271909) | Cod sursa (job #419822)
Cod sursa(job #419822)
// stramosi2.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
int main() {
int n,m,i,j,alcui,nivelul;
FILE *f=fopen("stramosi2.in","r");
FILE *g=fopen("stramosi.out","w");
fscanf(f,"%d %d",&n,&m);
//printf("%d %d\n",m,n);
int *inceput=new int[n+1];
int *lungime=new int[n+1];
int *lin1=new int [n+1];
int *vect=new int [n*n];
int pozc=0, urm,rez;
//vector<vector<int> > vect(n+1,vector<int>(n+1,0));
for(i=1; i<=n; i++) fscanf(f,"%d",&lin1[i]);//construiesc prima linie a matricei
//for(i=1; i<=n; i++) printf("%d ",lin1[i]); printf("\n");
for (j=1; j<=n; j++) { //construiesc cate o coloana
lungime[j]=0; inceput[j]=pozc;
urm=lin1[j];
while(urm){
vect[pozc++]=urm;
urm=lin1[urm];
lungime[j]++;
}
}
/*for (j=1; j<=n; j++) {
printf("inceput[%d]=%d,lungime[%d]=%d\n",j,inceput[j],j,lungime[j]);
for (i=0; i<lungime[j]; i++) printf("%3d", vect[inceput[j]+i]);
printf("\n");
}
*/
for(i=0; i<m; i++) {
fscanf(f,"%d %d",&alcui,&nivelul);
rez=vect[inceput[alcui]+nivelul-1];
if(nivelul>lungime[alcui]) rez=0;
//printf("%d\n", rez);
fprintf(g,"%d\n", rez);
}
fclose(f);
fclose(g);
return 0;
}