Myl100313 @ 2024-12-02 20:34:26
为什么只有50分?
#include<bits/stdc++.h>
using namespace std;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
int vis[1500][1500];
int n;
struct node
{
int x,y;
};
queue<node> q;
char maps[1500][1500];
node s,e;
void bfs()
{
while(!q.empty())
{
node u=q.front();
q.pop();
node v;
for(int i=0;i<3;i++)
{
v.x=u.x+dx[i],v.y=u.y+dy[i];
if(v.x>=1&&v.x<=n&&v.y>=1&&v.y<=n&&maps[v.x][v.y]=='0'&&vis[v.x][v.y]==0)
{
q.push(v);
vis[v.x][v.y]=vis[u.x][u.y]+1;
}
}
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>maps[i][j];
scanf("%d%d%d%d",&s.x,&s.y,&e.x,&e.y);
q.push(s);
vis[s.x][s.y]=1;
bfs();
cout<<vis[e.x][e.y]-1<<endl;
return 0;
}
by jiang_yitao @ 2024-12-04 19:32:19
@Myl100313第 20 行的
for(int i=0;i<3;i++)
应该为
for(int i=0;i<4;i++)
AC记录
求关
by Myl100313 @ 2024-12-04 19:52:29
@jiang_yitao谢谢