Pagini recente » Cod sursa (job #2777114) | Cod sursa (job #2018427) | Cod sursa (job #127477) | Cod sursa (job #2571390) | Cod sursa (job #281551)
Cod sursa(job #281551)
using namespace std;
#define Nmax 250000
#include<cstdio>
struct nod { int v; nod* next;};
nod * a[Nmax],*sol[Nmax];
int n,m,viz[Nmax];
void add(int i,int j)
{
nod *p=new nod;
p->v=i;
p->next=a[j];
a[j]=p;
}
void read()
{
int i,j;
freopen("stramosi.in","r",stdin);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&j);
add(i,j);
}
}
int caut(int i,int j)
{
nod *u=sol[i];
for(j;j>0 && u;j--)
u=u->next;
if(u->v)
return u->v;
return 0;
}
void add2(int i,int j)
{
nod*p=new nod;
p->v=i;
p->next=sol[j];
sol[j]=p;
}
void dfs(int i)
{
viz[i]=1;
for(nod*u=a[i];u;u=u->next)
if(!viz[u->v])
{
add2(u->v,i);
dfs(u->v);
}
}
int main()
{
int i,x,y;
read();
dfs(1);
freopen("stramosi.out","w",stdout);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
printf("%d\n",caut(x,y));
}
return 0;
}