結果
| 問題 | No.1283 Extra Fee | 
| コンテスト | |
| ユーザー | 👑  Kazun | 
| 提出日時 | 2020-11-06 23:00:52 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 1,590 ms / 2,000 ms | 
| コード長 | 918 bytes | 
| コンパイル時間 | 223 ms | 
| コンパイル使用メモリ | 82,040 KB | 
| 実行使用メモリ | 158,968 KB | 
| 最終ジャッジ日時 | 2024-11-16 06:51:45 | 
| 合計ジャッジ時間 | 19,153 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 30 | 
ソースコード
import sys,heapq
input=sys.stdin.readline
N,M=map(int,input().split())
inf=float("inf")
F=[[1]*(N+1) for _ in range(N+1)]
for _ in range(M):
    h,w,c=map(int,input().split())
    F[h][w]+=c
V=[(1,0),(-1,0),(0,1),(0,-1)]
Dist=[[[inf,inf] for _ in range(N+1)] for __ in range(N+1)]
Dist[1][1][0]=0
Flag=[[[False,False] for _ in range(N+1)] for __ in range(N+1)]
Q=[(0,(1,1,0))]
heapq.heapify(Q)
while Q:
    d,v=heapq.heappop(Q)
    i,j,m=v
    if Flag[i][j][m]:
        continue
    Flag[i][j][m]=True
    if i==j==N:
        break
    for (a,b) in V:
        if 1<=i+a<=N and 1<=j+b<=N:
            if d+F[i+a][j+b]<Dist[i+a][j+b][m]:
                Dist[i+a][j+b][m]=d+F[i+a][j+b]
                heapq.heappush(Q,(d+F[i+a][j+b],(i+a,j+b,m)))
            if m==0 and d+1<Dist[i+a][j+b][1]:
                Dist[i+a][j+b][1]=d+1
                heapq.heappush(Q,(d+1,(i+a,j+b,1)))
print(min(Dist[N][N]))
            
            
            
        