题解
2024-06-16 15:00:01
发布于:北京
70阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int vis[101][101],mp[101][101],dx[]={-1,-1,0,1,1,1,0,-1},dy[]={0,-1,-1,-1,0,1,1,1},n,m,x,y,f,r,maxx;
struct Node
{
int x,y,step;
}q[100001];
void bfs()
{
while (f<r)
{
Node tmp=q[f++];
for (int i=0;i<8;i++)
{
int tx=tmp.x+dx[i],ty=tmp.y+dy[i];
if ((tx<1||tx>n||ty<1||ty>m)||vis[tx][ty]==1)continue;
vis[tx][ty]=1;
q[r++]=Node{tx,ty,tmp.step+1};
mp[tx][ty]=tmp.step+1;
maxx=mp[tx][ty];
}
}
}
int main()
{
cin>>n>>m>>x>>y;
q[r++]=Node{x,y,0};
vis[x][y]=1;
bfs();
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
cout<<mp[i][j]<<' ';
cout<<endl;
}cout<<maxx<<endl;
return 0;
}
这里空空如也
有帮助,赞一个