結果
| 問題 |
No.160 最短経路のうち辞書順最小
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-09-28 17:36:26 |
| 言語 | Python2 (2.7.18) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 857 bytes |
| コンパイル時間 | 523 ms |
| コンパイル使用メモリ | 6,912 KB |
| 実行使用メモリ | 11,008 KB |
| 最終ジャッジ日時 | 2024-11-21 08:02:22 |
| 合計ジャッジ時間 | 3,069 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | WA * 26 |
ソースコード
import heapq
N, M, S, G = map(int, raw_input().split())
rinsetsu = [[] for i in xrange(N)]
for _ in xrange(M):
a, b, c = map(int, raw_input().split())
rinsetsu[a].append((b, c))
rinsetsu[b].append((a, c))
def dijkstra():
dist = [(float('inf'), '') for i in xrange(N)]
dist[S] = (0, str(S))
q = []
for n, c in rinsetsu[S]:
heapq.heappush(q, (c, n))
dist[n] = (c, str(S)+str(n))
while len(q) != 0:
c, n = heapq.heappop(q)
if c > dist[n][0]:
continue
for nn, nc in rinsetsu[n]:
alt = dist[n][0] + nc
if dist[nn][0] > alt or (dist[nn][0] == alt and dist[n][1]+str(nn) < dist[nn][1]):
dist[nn] = (alt, dist[n][1]+str(nn))
heapq.heappush(q, (alt, nn))
return dist
print ' '.join(dijkstra()[G][1])