```cpp
#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
int n, m, x, y;
int map[405][405];
int dx[10]={-2, -2, -1, 1, 2, 2, 1, -1};
int dy[10]={-1, 1, 2, 2, 1, -1 ,-2, -2};
bool flag[405][405];
struct cdn{
int x;
int y;
};
queue <cdn> a;
void bfs(){
int s=1, d=0;
while(a.empty()==0)
{
cdn g;
g=a.front();
if(d==0) d=a.size();
for(int i=0;i<8;i++)
{
int tx=g.x+dx[i];
int ty=g.y+dy[i];
if(tx>=1
&& tx<=n
&& ty>=1
&& ty<=m
&& flag[tx][ty]==1)
{
flag[tx][ty]=0;
map[tx][ty]=s;
cdn w;
w.x=tx;
w.y=ty;
a.push(w);
}
}
d--;
if(d==0) s++;
a.pop();
}
return ;
}
int f(int x){
if(x==0) return 1;
int sum=0;
while(x!=0)
{
x=x/10;
sum++;
}
return sum;
}
void print(int x, int y){
if(map[x][y]==-1)
{
cout<<-1<<" ";
return ;
}
int n=5-f(map[x][y]);
cout<<map[x][y];
for(int i=0;i<n;i++)
cout<<" ";
return ;
}
int main()
{
cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
map[i][j]=-1;
flag[i][j]=1;
}
flag[x][y]=0;
map[x][y]=0;
cdn k;
k.x=x;
k.y=y;
a.push(k);
bfs();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
print(i, j);
cout<<endl;
}
return 0;
}
```
by billtun @ 2024-03-31 14:12:06
@[YU15242911770](/user/1282388)
把
```cpp
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
```
关了试试
by HAha201205221633 @ 2024-04-02 20:19:26
@[HAha201205221633](/user/892365) 啊???AC了,大佬nb,关注了,这是为什么呀?
by YU15242911770 @ 2024-04-02 20:34:28
因为
```cpp
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
```
把 iostream 的 cin 和 cout 与 stdio 的 scanf 和 printf 的同步关了,所以加了这个就不能用printf了。
by HAha201205221633 @ 2024-04-02 20:41:19