結果
問題 |
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])