結果
問題 | No.788 トラックの移動 |
ユーザー |
![]() |
提出日時 | 2021-02-12 00:07:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,914 ms / 2,000 ms |
コード長 | 1,025 bytes |
コンパイル時間 | 221 ms |
コンパイル使用メモリ | 82,320 KB |
実行使用メモリ | 259,044 KB |
最終ジャッジ日時 | 2024-07-18 10:56:48 |
合計ジャッジ時間 | 11,908 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 14 |
ソースコード
import sysdef MI(): return map(int, sys.stdin.buffer.readline().split())def LI(): return list(map(int, sys.stdin.buffer.readline().split()))inf = 10**16from heapq import *def dijk(u):hp = []dist = [inf]*ndist[u] = 0heappush(hp, (0, u))while hp:d, u = heappop(hp)if d > dist[u]: continuefor v, c in to[u]:nd = d+cif nd >= dist[v]: continuedist[v] = ndheappush(hp, (nd, v))return distn, m, l = MI()l -= 1tt = LI()if tt.count(0) >= n-1:print(0)exit()to = [[] for _ in range(n)]for _ in range(m):a, b, c = MI()a, b = a-1, b-1to[a].append((b, c))to[b].append((a, c))dd = []for u in range(n):dd+=dijk(u)# print(dd)ans = inffor g in range(n):mn = inffor s in range(n):if tt[s] == 0: continuecur = dd[l*n+s]-dd[s*n+g]if cur < mn: mn = curmn += sum(tt[u]*dd[u*n+g] for u in range(n))*2if mn < ans: ans = mnprint(ans)