結果
問題 | No.1301 Strange Graph Shortest Path |
ユーザー |
|
提出日時 | 2023-02-17 21:01:28 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,580 bytes |
コンパイル時間 | 202 ms |
コンパイル使用メモリ | 82,448 KB |
実行使用メモリ | 152,152 KB |
最終ジャッジ日時 | 2024-07-19 12:08:33 |
合計ジャッジ時間 | 26,405 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 28 WA * 5 |
ソースコード
import sysfrom collections import deque, Counterinput = lambda: sys.stdin.readline().rstrip()ii = lambda: int(input())mi = lambda: map(int, input().split())li = lambda: list(mi())inf = 2 ** 63 - 1mod = 998244353def Dijkstra(s, graph):INF = 2 ** 63 - 1import heapqn = len(graph)dist = [INF] * ndist[s] = 0bef = [0] * nbef[s] = shq = [(0, s)]heapq.heapify(hq)while hq:c, now = heapq.heappop(hq)if c > dist[now]:continuefor to, cost in graph[now]:if dist[now] + cost < dist[to]:dist[to] = cost + dist[now]bef[to] = nowheapq.heappush(hq, (dist[to], + to))return dist, befdef DijkstraRest(bef, t):now = tret = []while bef[now] != now:ret.append((bef[now], now))now = bef[now]ret.reverse()return retn, m = mi()edge = [li() for _ in range(m)]D = {}for u, v, c, d in edge:u -= 1; v -= 1D[u, v] = D[v, u] = (c, d)graph = [[] for _ in range(n)]for V in D.keys():u, v = Vgraph[u].append((v, D[V][0]))graph[v].append((u, D[V][0]))dist, r = Dijkstra(0, graph)ans = dist[n - 1]R = set(DijkstraRest(r, n - 1))graph = [[] for _ in range(n)]for V in D.keys():u, v = Vif (u, v) in R or (v, u) in R:graph[u].append((v, D[V][1]))graph[v].append((u, D[V][1]))else:graph[u].append((v, D[V][0]))graph[v].append((u, D[V][0]))dist, r = Dijkstra(0, graph)ans += dist[n - 1]print(ans)