P1443 马的遍历

bfs裸题,输出sb

const int N=410;
int dist[N][N];
PII st;
int n,m;

bool check(int x,int y)
{
    return x>=1 && x<=n && y>=1 && y<=m;
}

void bfs(int x,int y)
{
    memset(dist,-1,sizeof dist);
    queue<PII> q;
    dist[x][y]=0;
    q.push({x,y});

    while(q.size())
    {
        PII t=q.front();
        q.pop();

        for(int i=0;i<8;i++)
        {
            int a=t.fi+dx8[i],b=t.se+dy8[i];
            if(check(a,b) && dist[a][b] == -1)
            {
                dist[a][b]=dist[t.fi][t.se]+1;
                q.push({a,b});
            }
        }
    }
}

int main()
{
    cin>>n>>m;
    cin>>st.fi>>st.se;

    bfs(st.fi,st.se);

    for(int i=1;i<=n;i++,puts(""))
        for(int j=1;j<=m;j++)
            printf("%-5d",dist[i][j]);
    //system("pause");
}
posted @ 2020-09-17 20:44  Dazzling!  阅读(126)  评论(0编辑  收藏  举报