提出 #8689705


ソースコード 拡げる

import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

from collections import deque
from heapq import heappop, heappush

N,K = map(int,readline().split())
m = map(int,read().split())
data = list(zip(m,m))
CR = data[:N]
AB = data[N:]

graph = [[] for _ in range(N+1)]
for a,b in AB:
    graph[a].append(b)
    graph[b].append(a)

INF = 10 ** 10

def bfs(start):
    q = deque([start])
    dist = [INF] * (N+1)
    dist[start] = 0
    while q:
        v = q.popleft()
        for w in graph[v]:
            if dist[w] != INF:
                continue
            dist[w] = dist[v] + 1
            q.append(w)
    return dist

dist_mat = [[INF] * (N+1)] + [bfs(i) for i in range(1,N+1)]

for i in range(1,N+1):
    c,r = CR[i - 1]
    for j in range(1,N+1):
        dist_mat[i][j] = c if dist_mat[i][j] <= r else INF

dist = [INF] * (N+1)
q = [(0,1)]
dist[0] = 0
while q:
    dv,v = heappop(q)
    if dv > dist[v]:
        continue
    if v == N:
        break
    for w in range(1,N+1):
        dw = dv + dist_mat[v][w]
        if dw >= dist[w]:
            continue
        dist[w] = dw
        heappush(q, (dw,w))

answer = dist[N]
print(answer)

提出情報

提出日時
問題 E - タクシー (Taxis)
ユーザ maspy
言語 PyPy3 (2.4.0)
得点 100
コード長 1266 Byte
結果 AC
実行時間 3508 ms
メモリ 240268 KiB

ジャッジ結果

セット名 set01 set02 set03 set04 set05
得点 / 配点 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
結果
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
セット名 テストケース
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
ケース名 結果 実行時間 メモリ
data1 AC 173 ms 38640 KiB
data2 AC 191 ms 40560 KiB
data3 AC 374 ms 57692 KiB
data4 AC 3201 ms 238856 KiB
data5 AC 3508 ms 240268 KiB