Pagini recente » Cod sursa (job #2344957) | Cod sursa (job #1672174) | Cod sursa (job #107376) | Cod sursa (job #2086299) | Cod sursa (job #162122)
Cod sursa(job #162122)
#include <iostream>
int A[18][250001],T[250001];
int main()
{
int n,m,i,ok,p;
freopen ( "stramosi.in" , "r" , stdin );
scanf ( "%d %d" , &n , &m );
for ( i=1 ; i<=n ; i++ )
scanf ( "%d" , T[i] );
for ( i=1 ,ok=0; i<=n ; i++ ) ok|=A[0][i]=T[T[i]];
for ( p=1 ; ok ; p++ )
for ( ok=i=0 ; i<=n ; i++ ) ok|=A[p][i]=A[p-1][A[p-1][i]];
freopen ( "stramosi.out" , "w" , stdout );
while (m--)
{
scanf ( "%d %d" , &i , &ok );
for ( p=0 ; ok&&i ; ok>>=1,p++ )
if (ok&1) i=A[p][i];
printf ( "%d\n" , i );
}
fclose ( stdout );
fclose ( stdin );
return 0;
}