結果
| 問題 |
No.34 砂漠の行商人
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-08-08 16:30:07 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 89 ms / 5,000 ms |
| コード長 | 980 bytes |
| コンパイル時間 | 84 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 11,264 KB |
| 最終ジャッジ日時 | 2024-06-28 10:19:46 |
| 合計ジャッジ時間 | 2,053 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 26 |
ソースコード
def read_data():
N, V, Sx, Sy, Gx, Gy = map(int, input().split())
data = [list(map(int, input().split())) for n in range(N)]
return N, V, Sx - 1, Sy - 1, Gx - 1, Gy - 1, data
def solve(N, V, Sx, Sy, Gx, Gy, data):
fs = dict()
fs[Sx, Sy] = V
vs = [[0] * N for n in range(N)]
vs[Sx][Sy] = V
steps = 0
while fs:
steps += 1
nfs = dict()
for (x, y), v in fs.items():
for nx, ny in [(x-1, y), (x+1, y), (x, y-1), (x, y+1)]:
if nx < 0 or nx >= N or ny < 0 or ny >= N:
continue
newv = v - data[ny][nx]
if newv <= vs[nx][ny]:
continue
vs[nx][ny] = newv
nfs[nx, ny] = newv
if nx == Gx and ny == Gy:
return steps
fs = nfs
return -1
if __name__ == '__main__':
N, V, Sx, Sy, Gx, Gy, data = read_data()
print(solve(N, V, Sx, Sy, Gx, Gy, data))