Pagini recente » Borderou de evaluare (job #2320535) | Cod sursa (job #79470)
Cod sursa(job #79470)
#include <stdio.h>
#include <stdlib.h>
#define infile "stramosi.in"
#define outfile "stramosi.out"
#define nmax 250001
long n, m, c[nmax], i, *v[nmax], q, p, j;
int main()
{
int temp;
freopen(infile, "r", stdin);
freopen(outfile, "w", stdout);
scanf("%ld %ld\n", &n, &m);
for (i=1; i<=n; i++)
{
scanf("%ld ", &c[i]);
v[i]=(long *)realloc(v[i], sizeof(long));
v[i][0]=0;
}
for (i=1; i<=n; i++)
{
temp=0;
j=i;
while(c[j])
{
v[i]=(long *)realloc(v[i], (temp+1)*sizeof(long));
v[i][0]++;
v[i][++temp]=c[j];
j=c[j];
}
}
for (i=1; i<=m; i++)
{
scanf("%ld %ld\n", &q, &p);
if (v[q][0]>=p)
printf("%ld\n", v[q][p]);
else printf("0\n");
}
fclose(stdin);
fclose(stdout);
return 0;
}