結果
| 問題 | No.3393 Move on Highway |
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2025-11-28 22:48:13 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,714 ms / 3,000 ms |
| コード長 | 1,014 bytes |
| コンパイル時間 | 314 ms |
| コンパイル使用メモリ | 82,252 KB |
| 実行使用メモリ | 131,632 KB |
| 最終ジャッジ日時 | 2025-11-28 22:48:51 |
| 合計ジャッジ時間 | 36,660 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 33 |
ソースコード
n, m, c = map(int, input().split())
node = [[] for _ in range(n)]
for _ in range(m):
u, v, w = map(int, input().split())
u, v = u-1, v-1
node[u].append((v, w))
node[v].append((u, w))
from heapq import *
hq = [(0, 0)]
inf = 1 << 60
D = [inf] * n
D[0] = 0
while hq:
dist, now = heappop(hq)
if D[now] < dist:
continue
for nxt, w in node[now]:
ndist = dist+w+c
if D[nxt] > ndist:
D[nxt] = ndist
heappush(hq, (ndist, nxt))
E = [inf] * 2*n
E[2*n-1] = 0
hq = [(0, 2*n-1)]
while hq:
dist, now = heappop(hq)
if E[now] < dist:
continue
for nxt, w in node[now%n]:
f = 0
if now//n:
ndist = dist+c
if E[nxt] > ndist:
E[nxt] = ndist
heappush(hq, (ndist, nxt))
f = n
ndist = dist+w+c
if E[nxt+f] > ndist:
E[nxt+f] = ndist
heappush(hq, (ndist, nxt+f))
for i in range(1, n):
print(min(D[n-1], D[i]+E[i]))
kidodesu