結果
| 問題 |
No.2354 Poor Sight in Winter
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-06-16 22:34:54 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,206 bytes |
| コンパイル時間 | 396 ms |
| コンパイル使用メモリ | 82,020 KB |
| 実行使用メモリ | 101,424 KB |
| 最終ジャッジ日時 | 2024-06-24 15:15:07 |
| 合計ジャッジ時間 | 8,797 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 RE * 3 |
ソースコード
import sys
sys.setrecursionlimit(5*10**5)
input = sys.stdin.readline
from collections import defaultdict, deque, Counter
from heapq import heappop, heappush
from bisect import bisect_left, bisect_right
from math import gcd
n,k = map(int,input().split())
sx,sy,gx,gy = map(int,input().split())
xy = [[sx,sy]]
for i in range(n):
xy.append(list(map(int,input().split())))
xy.append([gx,gy])
graph = [[] for i in range(n+2)]
for i in range(n+2):
xi,yi = xy[i]
for j in range(n+2):
xj,yj = xy[j]
if i == j: continue
graph[i].append([j,abs(xi-xj) + abs(yi-yj)])
#ダイクストラ法
def dijkstra(s,n, p): # sがスタート、nが頂点数
INF = 10**15
dist = [INF]*(n+1)
que = [(0,s)]
dist[s] = 0
while que:
c,crr = heappop(que)
if c > dist[crr]: continue
for nxt, cost in graph[crr]:
cnt = (cost-1)//p
if dist[crr] + cnt < dist[nxt]:
dist[nxt] = dist[crr] + cnt
heappush(que,(dist[nxt],nxt))
return dist[-2]
l = 0
r = 10**6
for i in range(40):
m = (l+r)//2
cnt = dijkstra(0, n+2, m)
if cnt <= k:
r = m
else:
l = m
print(r)