Pagini recente » Cod sursa (job #1028544) | Cod sursa (job #2631300) | Cod sursa (job #472933) | Cod sursa (job #1233367) | Cod sursa (job #2395124)
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *f,*g;
struct graf
{
int node,next;
}v[250002];
int start[250002],fr[25002];
int n,m,l,niv;
void read()
{ int x,y,k=0;
fscanf(f,"%d %d",&n,&m);
for(int i=1; i<=n; i++)
{
fscanf(f,"%d",&x);
v[++k].node=x;
v[k].next=start[i];
start[i]=k;
}
}
void dfs(int nod, int q)
{
while(q!=niv && nod!=0)
{
fr[nod]=l;
for(int i=start[nod]; i ; i=v[i].next)
if(fr[v[i].node]<l)
{
fr[v[i].node]=l;
q++;
nod=v[i].node;
break;
}
}
fprintf(g,"%d\n",nod);
}
void solve()
{ int x;
for(l=1; l<=m; l++)
{
fscanf(f,"%d %d",&x,&niv);
dfs(x,0);
}
}
int main()
{ f = fopen("stramosi.in", "r");
g = fopen("stramosi.out", "w");
read();
solve();
//write();
fclose(f);
fclose(g);
return 0;
}