Pagini recente » Cod sursa (job #2324176) | Cod sursa (job #1984820) | Cod sursa (job #2468158) | Cod sursa (job #375063) | Cod sursa (job #324259)
Cod sursa(job #324259)
#include<iostream>
using namespace std;
typedef struct str
{
int n;
str * par , *par2;
}str;
int main()
{
int n,m;
FILE *in = fopen("stramosi.in", "r");
FILE *out = fopen("stramosi.out", "w");
fscanf(in,"%d %d",&n,&m);
str * v = (str *)malloc( (n+1)*sizeof(str));
for(int i=1;i<=n;i++){
int k;
fscanf(in,"%d",&k);
if(!k) v[i].par = NULL;
else v[i].par = &v[k];
v[i].par2 = NULL;
v[i].n = i;
}
for(int i=1;i<=n;i++){
if(v[i].par)
v[i].par2 = v[i].par->par;
}
for( int i = 1; i<= m; i++) {
int p;
int q;
fscanf(in,"%d %d",&q,&p);
str * pp = &v[q];
while(pp && p >1) {
pp = pp->par;
p-=2;
}
if(pp && p) {
pp = pp->par;
p--;
}
//cout<<p<<" ";
if(pp && p==0)fprintf(out,"%u\n",pp->n);
else fprintf(out,"0\n");
}
fclose(in);
fclose(out);
return 0;
}