3 条题解
-
1
#include <iostream> #include <queue> #include <iomanip> using namespace std; struct node { int x; int y; int step; }; int n, m, sx, sy, ex, ey; char s[405][405]; bool vis[405][405]; int dis[405][405]; int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2}; int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1}; void bfs() { queue<node> q; q.push({sx, sy, 0}); vis[sx][sy]=true; dis[sx][sy]=0; while (!q.empty()) { node now = q.front(); q.pop(); for (int i = 0; i <= 7; i++) { int nx = now.x + dx[i], ny = now.y + dy[i]; if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && vis[nx][ny] == false) { vis[nx][ny] = true; q.push({nx, ny, now.step + 1}); dis[nx][ny]=dis[now.x][now.y]+1; } } } } int main() { cin >> n >> m >> sx >> sy; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { dis[i][j]=-1; } } bfs(); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cout<<left; cout<<setw(5)<<dis[i][j]; } cout<<endl; } return 0; }
信息
- ID
- 2495
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 738
- 已通过
- 150
- 上传者