Cod sursa(job #226176)
Utilizator | Data | 1 decembrie 2008 08:38:10 | |
---|---|---|---|
Problema | Stramosi | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.43 kb |
#include <stdio.h>
int A[260000],y;
int DFS(int p,int nr)
{
if (nr==y) return p;
if (p==0) return 0;
if (A[p]==p) return p;
return DFS(A[p],++nr);
}
int main()
{
FILE *in = fopen("stramosi.in","r");
FILE *out = fopen("stramosi.out","w");
int n,i,m,x;
fscanf(in,"%d%d",&n,&m);
for (i=1;i<=n;i++) fscanf(in,"%d",&A[i]);
for (i=1;i<=m;i++)
{
fscanf(in,"%d%d",&x,&y);
fprintf(out,"%d\n",DFS(x,0));
}
}