Pagini recente » Cod sursa (job #630317) | Cod sursa (job #2829517) | Cod sursa (job #988925)
Cod sursa(job #988925)
# include <cstdio>
# include <iostream>
# include <vector>
using namespace std;
# define MAXN 250005
//<parsare>
FILE* fin=fopen("stramosi.in","r");
const unsigned maxb=8192;
char buf[maxb];
unsigned ptr=maxb;
inline int getInt(){
int nr=0,mul=1;
while(buf[ptr]<'0'||'9'<buf[ptr]||buf[ptr]=='-'){
if(buf[ptr]=='-'){
mul=-1;
}
if(++ptr>=maxb)
fread(buf,maxb,1,fin),ptr=0;
}
while('0'<=buf[ptr]&&buf[ptr]<='9'){
nr=nr*10+buf[ptr]-'0';
if(++ptr>=maxb)
fread(buf,maxb,1,fin),ptr=0;
}
return nr*mul;
}
//</parsare>
int n, m;
int a[MAXN];
int dfs(int nod, int n)
{
if (n == 0) {
return nod;
}
if (a[nod] == 0) {
return 0;
}
return dfs(a[nod], n - 1);
}
int main()
{
FILE* g = fopen("stramosi.out", "w");
n = getInt();
m = getInt();
for (int i = 1; i <= n; i++) {
int t;
t = getInt();
a[i] = t;
}
for (int i = 1; i <= m; i++) {
int q, p;
q = getInt();
p = getInt();
fprintf(g, "%d\n", dfs(q, p));
}
fclose(g);
return 0;
}