bfs 20pts 其他网站都过了,洛谷过不了
查看原帖
bfs 20pts 其他网站都过了,洛谷过不了
1334189
Liyuhui222楼主2025/1/8 11:40
#include<bits/stdc++.h>
using namespace std;
struct node
{
	int x,y;
};
int dx[] = {1,1,-1,-1,2,2,-2,-2};
int dy[] = {2,-2,2,-2,1,-1,1,-1};
int n,m;
int sx,sy;
queue<node> q;
int dis[500][500];
bool f[500][500];
int main() 
{
	cin >> n >> m;
	cin >> sx >> sy;
	q.push({sx,sy});
	f[sx][sy] = 1;
	memset(dis,-1,sizeof(dis));
	dis[sx][sy] = 0;
	while(!q.empty())
	{
		int x = q.front().x;
		int y = q.front().y;
		q.pop();
		for(int i = 0;i < 8;i++)
		{
			int nx = x + dx[i];
			int ny = y + dy[i];
			if(nx < 1 || nx > n || ny < 1 || ny > n)
			{
				continue;
			}
			if(f[nx][ny])
			{
				continue;
			}
			q.push({nx,ny});
			f[nx][ny] = 1;
			dis[nx][ny] = dis[x][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;
}
2025/1/8 11:40
加载中...