結果
問題 | No.160 最短経路のうち辞書順最小 |
ユーザー |
![]() |
提出日時 | 2015-03-16 12:23:36 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 196 ms / 5,000 ms |
コード長 | 672 bytes |
コンパイル時間 | 754 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 77,312 KB |
最終ジャッジ日時 | 2024-06-28 23:06:20 |
合計ジャッジ時間 | 6,396 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 26 |
ソースコード
#Created on 2015/03/16 ans inf = 10 ** 9 [N,M,S,G] = map(int, input().split()) dist = [[inf] * N for _ in range(N)] edge = [[0] * N for _ in range(N)] for i in range(N) : dist[i][i] = 0 for _ in range(M) : a,b,c = map(int, input().split()) dist[a][b] = dist[b][a] = c edge[a][b] = edge[b][a] = c for k in range(N) : for i in range(N) : for j in range(N) : dist[i][j] = min(dist[i][j], dist[i][k]+dist[k][j]) ans = str(S) while S != G : for i in range(N) : if edge[S][i] + dist[i][G] == dist[S][G] and edge[S][i] : ans += " " + str(i) S = i break print(ans)