50分求助
查看原帖
50分求助
1094797
Myl100313楼主2024/12/2 20:34

为什么只有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;
}

2024/12/2 20:34
加载中...