#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <array>
using namespace std;
typedef long long LL;
typedef array<int, 4> AI4;
const int N = 2010;
int g[N][N];
int st[N][N] = {0};
int n, m, v;
int sx, sy, ex, ey;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
queue<AI4> q;
int res = -1;
void bfs()
{
while(q.size())
{
auto &[x, y, s, c] = q.front();
c = max(c, g[x][y]);
q.pop();
if(x == ex && y == ey && c > v)
{
res = s; break;
}
for(int i = 0; i < 4; i ++)
{
int a = x + dx[i], b = y + dy[i];
if(a < 0 || a >= n || b < 0 || b >= m || g[a][b] == -1)
continue;
if(c > st[a][b])
{
st[a][b] = c;
q.push({a, b, s + 1, c});
}
}
}
}
int main(){
cin >> n >> m >> v;
cin >> sx >> sy >> ex >> ey;
sx --, sy --, ex --, ey --;
for(int i = 0; i < n; i ++)
for(int j = 0; j < m; j ++)
cin >> g[i][j];
q.push({sx, sy, 0, 0});
memset(st, -0x3f, sizeof st);
bfs();
cout << res << endl;
return 0;
}
NC 游戏购买!
最新推荐文章于 2024-07-21 19:42:40 发布