提出 #73306102


ソースコード 拡げる

N = int(input())
A = list(map(int,input().split()))
X = [-1]*N
ans = [-1]*N
for i in range(N):
    if X[i] != -1:
        continue
    Y = []
    M = i
    while X[M] == -1:
        X[M] = i
        Y.append(M)
        M = A[M]-1
    if X[M] == i:
        Z = Y[Y.index(M):]
        L = len(Z)
        k = pow(10,100,L)
        for j in range(L):
            ans[Z[j]] = Z[(j+k)%L]
    for k in reversed(Y):
        if ans[k] == -1:
            ans[k] = ans[A[k]-1]
print(*[x+1 for x in ans])

提出情報

提出日時
問題 C - Sugoroku Destination
ユーザ glaceon1020
言語 Python (PyPy 3.11-v7.3.20)
得点 300
コード長 514 Byte
結果 AC
実行時間 428 ms
メモリ 236384 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 300 / 300
結果
AC × 3
AC × 18
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 51 ms 79776 KiB
00_sample_01.txt AC 50 ms 79776 KiB
00_sample_02.txt AC 49 ms 79936 KiB
01_random_03.txt AC 428 ms 201920 KiB
01_random_04.txt AC 427 ms 204008 KiB
01_random_05.txt AC 417 ms 203640 KiB
01_random_06.txt AC 414 ms 204020 KiB
01_random_07.txt AC 418 ms 204660 KiB
01_random_08.txt AC 421 ms 205224 KiB
01_random_09.txt AC 425 ms 206344 KiB
01_random_10.txt AC 425 ms 205608 KiB
01_random_11.txt AC 197 ms 138624 KiB
01_random_12.txt AC 182 ms 134564 KiB
01_random_13.txt AC 374 ms 186172 KiB
01_random_14.txt AC 92 ms 113016 KiB
01_random_15.txt AC 422 ms 206532 KiB
01_random_16.txt AC 53 ms 79936 KiB
01_random_17.txt AC 408 ms 236384 KiB