Pagini recente » Cod sursa (job #2181208) | Cod sursa (job #3160201) | Cod sursa (job #2889115) | Cod sursa (job #3277242) | Cod sursa (job #975619)
Cod sursa(job #975619)
#include <stdio.h>
#include <list>
#define NMAX 250005
#define MMAX 300005
using namespace std;
int N,M,SOL;
list<int> G[NMAX];
bool viz[NMAX];
void read()
{
scanf("%d %d\n",&N,&M);
int i,a;
for (i=1;i<=N;i++)
{
scanf("%d ",&a);
G[i].push_back(a);
}
}
void dfs(int p,int niv,int P)
{
list<int>:: iterator it;
viz[p]=1;
if (niv==P)
{
SOL=p;return;
}
for (it=G[p].begin();it!=G[p].end();++it)
if (!viz[*it])
dfs(*it,niv+1,P);
}
void clear()
{
int i;
for (i=1;i<=N;i++) viz[i]=0;
}
int main()
{
freopen ("stramosi.in","r",stdin);
freopen ("stramosi.out","w",stdout);
int i,a,b;
read();
for (i=1;i<=M;i++)
{
scanf("%d %d\n",&a,&b);
clear();
SOL=0;
dfs(a,0,b);
printf("%d\n",SOL);
}
fclose(stdin);
fclose(stdout);
return 0;
}