50分求助

P1746 离开中山路

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谢谢


|