結果
問題 | No.807 umg tours |
ユーザー | itsy68 |
提出日時 | 2022-06-10 02:32:06 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,632 ms / 4,000 ms |
コード長 | 2,557 bytes |
コンパイル時間 | 186 ms |
コンパイル使用メモリ | 82,568 KB |
実行使用メモリ | 327,308 KB |
最終ジャッジ日時 | 2024-09-21 05:41:20 |
合計ジャッジ時間 | 23,967 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 64 ms
68,436 KB |
testcase_01 | AC | 62 ms
69,376 KB |
testcase_02 | AC | 68 ms
72,956 KB |
testcase_03 | AC | 71 ms
73,584 KB |
testcase_04 | AC | 60 ms
67,540 KB |
testcase_05 | AC | 62 ms
68,360 KB |
testcase_06 | AC | 67 ms
72,976 KB |
testcase_07 | AC | 69 ms
74,224 KB |
testcase_08 | AC | 50 ms
63,976 KB |
testcase_09 | AC | 51 ms
64,148 KB |
testcase_10 | AC | 53 ms
63,764 KB |
testcase_11 | AC | 1,115 ms
233,452 KB |
testcase_12 | AC | 1,113 ms
227,940 KB |
testcase_13 | AC | 1,650 ms
265,088 KB |
testcase_14 | AC | 761 ms
163,460 KB |
testcase_15 | AC | 562 ms
146,652 KB |
testcase_16 | AC | 1,687 ms
268,644 KB |
testcase_17 | AC | 2,193 ms
320,028 KB |
testcase_18 | AC | 2,632 ms
322,852 KB |
testcase_19 | AC | 2,016 ms
327,308 KB |
testcase_20 | AC | 1,035 ms
246,208 KB |
testcase_21 | AC | 1,048 ms
248,352 KB |
testcase_22 | AC | 497 ms
142,648 KB |
testcase_23 | AC | 425 ms
127,460 KB |
testcase_24 | AC | 1,045 ms
276,476 KB |
testcase_25 | AC | 2,175 ms
321,416 KB |
ソースコード
# import pypyjit # pypyjit.set_param('max_unroll_recursion=-1') import sys from itertools import combinations, permutations, product, accumulate, groupby from collections import defaultdict, deque, Counter from functools import reduce from operator import add, mul import heapq import bisect import math import copy sys.setrecursionlimit(10 ** 9) input = lambda: sys.stdin.readline().rstrip() INF = float("inf") MOD = 10 ** 9 + 7 import collections import heapq class Dijkstra(): def __init__(self): self.e = collections.defaultdict(list) def add(self, u, v, d, directed=False): """ #0-indexedでなくてもよいことに注意 #u = from, v = to, d = cost #directed = Trueなら、有向グラフである """ if directed is False: self.e[u].append([v, d]) self.e[v].append([u, d]) else: self.e[u].append([v, d]) def delete(self, u, v): self.e[u] = [_ for _ in self.e[u] if _[0] != v] self.e[v] = [_ for _ in self.e[v] if _[0] != u] def Dijkstra_search(self, s): """ #0-indexedでなくてもよいことに注意 #:param s: 始点 #:return: 始点から各点までの最短経路と最短経路を求めるのに必要なprev """ d = collections.defaultdict(lambda: float('inf')) prev = collections.defaultdict(lambda: None) d[s] = 0 q = [] heapq.heappush(q, (0, s)) v = collections.defaultdict(bool) while len(q): k, u = heapq.heappop(q) if v[u]: continue v[u] = True for uv, ud in self.e[u]: if v[uv]: continue vd = k + ud if d[uv] > vd: d[uv] = vd prev[uv] = u heapq.heappush(q, (vd, uv)) return d, prev def getDijkstraShortestPath(self, start, goal): _, prev = self.Dijkstra_search(start) shortestPath = [] node = goal while node is not None: shortestPath.append(node) node = prev[node] return shortestPath[::-1] N, M = map(int, input().split()) ABC = [list(map(int, input().split())) for i in range(M)] graph = Dijkstra() for a, b, c in ABC: graph.add(a, b, c) graph.add(a, -b, 0, True) graph.add(b, -a, 0, True) graph.add(-a, -b, c) g, _ = graph.Dijkstra_search(1) print(0) for i in range(2, N + 1): print(g[i] + g[-i])