RE求调

P1746 离开中山路

Leo_Ye @ 2024-09-29 21:17:39

#include<iostream>
using namespace std;
int n,k,sx,sy,tx,ty,q[10005][3]={},f[4][2]={0,1 ,1,0 ,-1,0, 0,-1};
bool m[1005][1005]={}; 
int bfs(int x,int y)
{bool b=0;
    int head=0,tail=0;
    q[tail][0]=x;
    q[tail][1]=y;
    q[tail][2]=0;
    m[x][y]=0;
    tail++;
    while(head<tail)
    {
        if(q[head][0]==tx&&q[head][1]==ty)return q[head][2];
        for(int i=0;i<4;i++) 
        {
            int xx=q[head][0]+f[i][0],yy=q[head][1]+f[i][1];
            if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&m[xx][yy])
            {
                q[tail][0]=xx;
                q[tail][1]=yy;
                q[tail][2]=q[head][2]+1;
                m[xx][yy]=0;
                tail++;
                b=1;
            }
        }
        head++; 
    }
}
int main(){
    //freopen("P1746_1.in","r",stdin);
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            char c;cin>>c;
            if(c=='1')m[i][j]=0;
            else m[i][j]=1;
        }
    }cin>>sx>>sy>>tx>>ty;
    if(sx==tx&&sy==ty){cout<<"0\n";return 0;}
    cout<<bfs(sx,sy);
    return 0;
}

|