Pagini recente » Cod sursa (job #2073737) | Cod sursa (job #926531)
Cod sursa(job #926531)
/*
http://www.infoarena.ro/problema/stramosi
Familia lui Gigel este foarte numeroasa, avand exact N membri.
Fiecare membru stie cine este stramosul lui direct, mai putin
cativa membri care sunt foarte batrani si nu mai tin minte nici
macar cine a fost stramosul lor direct. Gigel, fiind o fire
curioasa a facut un inventar al familiei sale, in sensul ca a
numerotat fiecare membru cu un numar distinct intre 1 si N si
stie de asemenea pentru fiecare membru, care este stramosul lui
direct (daca acesta exista). Curiozitatea lui este si mai mare,
in sensul ca isi pune M intrebari de forma: "Care este al P-lea
stramos al membrului cu numarul Q?".
Scrieti un program care raspunde corect la toate cele M intrebari ale lui Gigel.
stramosi.in
13 7
0 1 2 2 4 1 6 0 8 8 10 10 12
5 2
3 2
7 1
1 3
13 3
9 2
11 1
stramosi.out
2
1
6
0
8
0
10
*/
#include<stdio.h>
#define MAX 250001
#define mMAX 300001
int T[MAX];
int n;
int m;
int p;
int q;
int stramos()
{
for(; p && T[q]; p--, q=T[q]);
if(p)
return 0;
return q;
}
void citire()
{
FILE *g=fopen("stramosi.in", "r");
FILE *f=fopen("stramosi.out", "w");
fscanf(g, "%d%d", &n, &m);
for(int i=1; i<=n; i++)
fscanf(g, "%d", &T[i]);
for(; m; m--)
{
fscanf(g, "%d%d", &q, &p);
fprintf(f, "%d\n", stramos());
}
}
int main()
{
citire();
return 0;
}