結果

問題 No.807 umg tours
ユーザー OKCH3COOHOKCH3COOH
提出日時 2019-11-13 20:59:01
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,837 ms / 4,000 ms
コード長 942 bytes
コンパイル時間 215 ms
コンパイル使用メモリ 82,048 KB
実行使用メモリ 167,444 KB
最終ジャッジ日時 2024-11-23 19:46:15
合計ジャッジ時間 18,270 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 62 ms
61,056 KB
testcase_01 AC 66 ms
62,848 KB
testcase_02 AC 81 ms
66,560 KB
testcase_03 AC 67 ms
63,360 KB
testcase_04 AC 55 ms
61,056 KB
testcase_05 AC 54 ms
61,440 KB
testcase_06 AC 62 ms
64,512 KB
testcase_07 AC 57 ms
62,464 KB
testcase_08 AC 44 ms
52,736 KB
testcase_09 AC 48 ms
53,504 KB
testcase_10 AC 51 ms
53,376 KB
testcase_11 AC 928 ms
137,036 KB
testcase_12 AC 879 ms
124,768 KB
testcase_13 AC 1,220 ms
144,116 KB
testcase_14 AC 605 ms
105,672 KB
testcase_15 AC 503 ms
99,180 KB
testcase_16 AC 1,233 ms
148,316 KB
testcase_17 AC 1,560 ms
161,764 KB
testcase_18 AC 1,597 ms
161,756 KB
testcase_19 AC 1,837 ms
157,984 KB
testcase_20 AC 801 ms
123,968 KB
testcase_21 AC 864 ms
127,420 KB
testcase_22 AC 411 ms
96,996 KB
testcase_23 AC 363 ms
93,492 KB
testcase_24 AC 660 ms
150,244 KB
testcase_25 AC 1,765 ms
167,444 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from heapq import heappush, heappop

def sol():
    N, M = map(int, input().split())
    edges = [[] for _ in range(2 * N)]

    edges[0].append((N, 0))

    for _ in range(M):
        fr, to, cost = map(int, input().split())
        fr -= 1
        to -= 1
        edges[fr].append((to, cost))
        edges[to].append((fr, cost))
        edges[fr + N].append((to + N, cost))
        edges[to + N].append((fr + N, cost))
        edges[fr].append((to + N, 0))
        edges[to].append((fr + N, 0))

    que = [(0, 0)]
    minDist = [float('inf')] * (2 * N)
    while que:
        dist, now = heappop(que)
        if minDist[now] < dist:
            continue
        minDist[now] = dist
        for to, cost in edges[now]:
            d = dist + cost
            if minDist[to] > d:
                heappush(que, (d, to))
                minDist[to] = d

    print(0)
    for i in range(1, N):
        print(minDist[i] + minDist[i + N])

sol()
0