結果

問題 No.160 最短経路のうち辞書順最小
コンテスト
ユーザー flippergo
提出日時 2026-10-17 09:22:41
言語 PyPy3
(8.0.0 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 893 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 84 ms
コンパイル使用メモリ 64,512 KB
実行使用メモリ 60,800 KB
最終ジャッジ日時 2026-10-17 09:22:46
合計ジャッジ時間 4,474 ms
ジャッジサーバーID
(参考情報)
judge4_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3 WA * 1
other AC * 9 WA * 17
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import heapq
N,M,S,G = map(int,input().split())
F = {i:[] for i in range(N)}
for _ in range(M):
    a,b,c = map(int,input().split())
    F[a].append((b,c))
    F[b].append((a,c))
INFTY = 10**7
dist = [INFTY]*N
visited = [False]*N
Pa = [-1]*N
def restore(u):
    seq = [u]
    x = u
    while x!=S:
        y = Pa[x]
        seq.append(y)
        x = y
    seq = seq[::-1]
    return seq
dist[S] = 0
heap = [(0,S)]
while heap:
    d,u = heapq.heappop(heap)
    if dist[u]<d:continue
    visited[u] = True
    for v,c in F[u]:
        if visited[v]:continue
        if dist[v]>d+c:
            dist[v] = d+c
            Pa[v] = u
            heapq.heappush(heap,(d+c,v))
        elif dist[v]==d+c:
            u1 = Pa[v]
            seq1 = restore(u1)
            seq = restore(u)
            if seq<seq1:
                Pa[v] = u
                heapq.heappush(heap,(d+c,v))
print(*restore(G))
0