60求调
  • 板块P1443 马的遍历
  • 楼主zcs_
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/26 16:45
  • 上次更新2023/12/26 20:10:09
查看原帖
60求调
996206
zcs_楼主2023/12/26 16:45
#include <cstdio>
#include <queue>
using namespace std;
int n,m,a,b,dis[505][505],vis[505][505];
int dx[10]={1,1,-1,-1,2,2,-2,-2};
int dy[10]={2,-2,2,-2,1,-1,1,-1};
struct node{
	int x,y;
};
queue<node>q;
int main(){
	cin>>n>>m>>a>>b;
	for (int i=1;i<=n;i++){
		for (int j=1;j<=m;j++){
			dis[i][j]=-1;
		}
	}
	q.push(node{a,b});
	vis[a][b]=1;
	dis[a][b]=0;
	while(!q.empty()){
		node t=q.front();
		q.pop();
		for (int i=0;i<8;i++){
			int x=t.x+dx[i];
			int y=t.y+dy[i];
			node tt=node{x,y};
			if (x>=0 && y>=0 && x<=n && y<=m && !vis[x][y]){
				vis[x][y]=1;
				q.push(tt);
				dis[tt.x][tt.y]=dis[t.x][t.y]+1;
			}
		}
	}
	for (int i=1;i<=n;i++){
		for (int j=1;j<=m;j++){
			printf("%-5d",dis[i][j]);
		}
		cout<<endl;
	}
    return 0;
}
2023/12/26 16:45
加载中...