洛谷p1443(bfs)
作者:互联网
题目链接:洛谷p1443
没什么好说的,简单的bfs,注意左对齐的格式,x对应行,y对应列
上代码。
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> p;
int dx[]={1,1,2,2,-1,-1,-2,-2};
int dy[]={2,-2,1,-1,2,-2,1,-1};
int n,m;
int sx,sy;
int step=0;
int vis[405][405],steps[405][405];
void bfs(int x,int y){
queue<pair<int,int> > q;
q.push(p(x,y));
steps[x][y]=0;
vis[x][y]=1;
while(!q.empty()){
int nx=q.front().first;
int ny=q.front().second;
q.pop();
for(int i=0;i<8;i++){
int px=nx+dx[i];
int py=ny+dy[i];
if(px<=0||px>n||py<=0||py>m||vis[px][py]==1) {//px代表行,py代表列,不能写反
continue;}
q.push(p(px,py));
vis[px][py]=1;
steps[px][py]=steps[nx][ny]+1;
}
}
}
int main(){
cin>>n>>m>>sx>>sy;
memset(steps,-1,sizeof steps);
memset(vis,0,sizeof vis);
bfs(sx,sy);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
printf("%-5d",steps[i][j]);
}
cout<<endl;
}
return 0;
}
标签:洛谷,p1443,int,px,py,bfs,vis,steps 来源: https://blog.csdn.net/J_M_Kirito/article/details/100095142