Pagini recente » Cod sursa (job #1638094) | Cod sursa (job #577407) | Cod sursa (job #2640722) | Cod sursa (job #765128) | Cod sursa (job #761063)
Cod sursa(job #761063)
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
char s1[2000000], s2[30];
int N, M, F[19][250001];
int main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
int i, j, number = 0, lg, cnt = 1;
fgets(s2, 30, stdin);
lg = strlen(s2) - 1;
for(i = 0; i < lg; i++)
if(s2[i] == ' ')
N = number, number = 0;
else
number = number * 10 + s2[i] - '0';
M = number;
number = 0;
fgets(s1, 2000000, stdin);
lg = strlen(s1) - 1;
for(i = 0; i < lg; i++)
if(s1[i] == ' ')
F[0][cnt ++] = number, number = 0;
else number = number * 10 + s1[i] - '0';
F[0][cnt ++] = number;
for(i = 1; (1 << i) <= N; i++)
for(j = 1; j <= N; j++)
F[i][j] = F[i - 1][F[i - 1][j]];
while(M --)
{
fgets(s2, 30, stdin);
lg = strlen(s2) - 1;
int p, q;
number = 0;
for(i = 0; i < lg; i++)
if(s2[i] == ' ')
p = number, number = 0;
else number = number * 10 + s2[i] - '0';
q = number;
for(i = 0; (1 << i) <= q; i++)
if(q & (1 << i))
p = F[i][p];
printf("%i\n", p);
}
scanf("%i", &i);
return 0;
}