code:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int cx,cy,dx,dy;
bool vis[1010][1010];
string s[1010];
int main()
{
cin>>n>>m;
cin>>cx>>cy>>dx>>dy;
cx--;
cy--;
dx--;
dy--;
for(int i=0;i<n;i++)
{
cin>>s[i];
}
deque<pair<int,pair<int,int> > >q;
q.push_front({0,{cx,cy}});
vis[cx][cy]=1;
while(!q.empty())
{
int x,y,z;
x=q.front().second.first;
y=q.front().second.second;
z=q.front().first;
q.pop_front();
if(x==dx&&y==dy)
{
cout<<z;
return 0;
}
for(int i=x-2;i<=x+2;i++)
{
for(int j=y-2;j<=y+2;j++)
{
if(0<=i&&i<n&&0<=j&&j<m)
{
if(!vis[i][j])
{
if(s[i][j]=='.')
{
if((i==x-1||i==x+1||i==x)&&(j==y-1||j==y+1||j==y))
{
vis[i][j]=1;
q.push_front({z,{i,j}});
}
else
{
vis[i][j]=1;
q.push_back({z+1,{i,j}});
}
}
}
}
}
}
}
cout<<-1;
return 0;
}
感觉是更新的问题,求调。