Pagini recente » Cod sursa (job #2667775) | Cod sursa (job #1584827) | Cod sursa (job #977491) | Cod sursa (job #1657699) | Cod sursa (job #2395068)
#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;
}
}
bool dfs(int nod, int q)
{
if(q==niv || nod==0)
{
fprintf(g,"%d\n",nod);
return true;
}
fr[nod]=l;
for(int i=start[nod]; i ; i=v[i].next)
if(fr[v[i].node]<l)
{
fr[v[i].node]=l;
dfs(v[i].node,q+1);
}
}
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;
}