其他分享
首页 > 其他分享> > 洛谷p1443(bfs)

洛谷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