結果
| 問題 |
No.807 umg tours
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-03-22 23:17:44 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 886 bytes |
| コンパイル時間 | 147 ms |
| コンパイル使用メモリ | 82,584 KB |
| 実行使用メモリ | 171,244 KB |
| 最終ジャッジ日時 | 2024-09-19 06:55:26 |
| 合計ジャッジ時間 | 9,558 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 5 WA * 21 |
ソースコード
from collections import defaultdict
from collections import deque
N, M = map( int, input().split())
E = [ [] for _ in range(N)]
D = defaultdict( int)
for _ in range(M):
a, b, c = map( int, input().split())
a, b = a-1, b-1
D[(a,b)] = D[(b,a)] = c
E[a].append(b)
E[b].append(a)
V = [ [10**16, 10**16,0] for _ in range(N)]
V[0] = [0,0,0]
H = deque(E[0])
P = [0]*N
F = [0]*N
P[0] = 1
F[0] = 1
for t in E[0]:
d = D[(0,t)]
V[t] = [d,d,d]
P[t] = 1
while H:
h = H.popleft()
F[h] = 1
q, p, m = V[h]
for t in E[h]:
if F[t] == 1:
continue
d = D[(h,t)]
V[t][0] = min(V[t][0], q + d)
if V[t][1] - V[t][2] >= p + d - max(d,m):
V[t][1] = p+d
V[t][2] = max(d,m)
if P[t] == 0:
H.append(t)
P[t] = 1
for i in range(N):
print(V[i][0] + V[i][1] - V[i][2])