結果
| 問題 |
No.1283 Extra Fee
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-02-19 09:31:12 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,205 bytes |
| コンパイル時間 | 704 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 103,040 KB |
| 最終ジャッジ日時 | 2024-09-15 13:40:17 |
| 合計ジャッジ時間 | 7,515 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | RE * 30 |
ソースコード
from heapq import heappop,heappush
def main1(n,m,hwc):
# d0[i][j]:(0,0)から(i,j)への最小コスト
# d1[i][j]:(i,j)から(n-1,n-1)への最小コスト
cost=[0]*(n**2)
for h,w,c in hwc:
h,w=h-1,w-1
cost[h*n+w]=c
inf=float('inf')
d0=[inf]*(n**2)
d0[0]=0
todo=[[0,0]]
while todo:
c,v=heappop(todo)
if d0[v]<c:continue
x,y=v//n,v%n
for dx,dy in ((0,1),(1,0),(0,-1),(-1,0)):
nx,ny=x+dx,y+dy
if 0<=nx<n and 0<=ny<n:
dc=cost[nx*n+ny]
if d0[nx*n+ny]>c+dc:
d0[nx*n+ny]=c+dc
heappush(todo,[c+dc,nx*n+ny])
d1=[inf]*(n**2)
d1[(n-1)*n+n-1]=0
todo=[[0,(n-1)*n+n-1]]
while todo:
c,v=heappop(todo)
if d1[v]<c:continue
x,y=v//n,v%n
for dx,dy in ((0,1),(1,0),(0,-1),(-1,0)):
nx,ny=x+dx,y+dy
if 0<=nx<n and 0<=ny<n:
dc=cost[nx*n+ny]
if d1[nx*n+ny]>c+dc:
d1[nx*n+ny]=c+dc
heappush(todo,[c+dc,nx*n+ny])
ans=inf
for i in range(n**2):
ans=min(ans,d1[i]+d0[i]-2*cost[i])
return ans+2*(n-1)
if __name__=='__main__':
n,m=map(int,input().split())
hwc=[list(map(int,input().split())) for _ in range(m)]
ret0=main0(n,m,hwc)
print(ret0)