bfs 40分 #1 #2 #5 #10 AC求助
查看原帖
bfs 40分 #1 #2 #5 #10 AC求助
896447
Determined_Love_Act楼主2024/4/9 13:16
#include <bits/stdc++.h>
using namespace std;

int n,m;
int a[401][401];

const int dx[8]={-1,-2,-2,-1,1,2,2,1};
const int dy[8]={2,1,-1,-2,2,1,-1,-2};
int vis[401][401];

struct node {
	int x;
	int y;
	int setp;
} q[401];
int xs,ys;
int xe,ye;
void bfs(int xs,int ys,int xe, int ye) {
	int head = 1;
	int tail = 1;
	q[tail].x = xs;
	q[tail].y = ys;
	q[tail].setp = 0;
	tail ++;
	vis[1][1] = 1;
	while (head < tail) {
		int x0 = q[head].x;
		int y0 = q[head].y;
		int setp0 = q[head].setp;
		if (x0 == xe && y0 == ye) {
			printf("%-5d", setp0);
			return ;
		}
		for (int i = 0; i < 8; i++) {
			int nx = x0 + dx[i];
			int ny = y0 + dy[i];
			if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && vis[nx][ny] != 1) {
				q[tail].x = nx;
				q[tail].y = ny;
				q[tail].setp = setp0 + 1;
				tail++;
				vis[nx][ny] = 1;
			}
		}
		head++;
	}
	cout<<"-1	";
}
void clearn(){
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=m;j++){
			vis[i][j] = 0;
		}
	}
}
int main() {
	cin >> n >> m;
	cin >> xs >> ys;
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=m;j++){
			bfs(xs,ys,i,j);
			clearn();
		}
		cout<<endl;
	}

	return 0;
}
2024/4/9 13:16
加载中...