2 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N = 1010; int n, m; char g[N][N]; struct Node { int x, y; }; int dis[N][N]; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, 1, 0, -1}; void bfs() { memset(dis, -1, sizeof dis); queue<Node> q; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (g[i][j] == '1') dis[i][j] = 0, q.push({i, j}); while (q.size()) { auto t = q.front(); q.pop(); for (int i = 0; i < 4; i++) { int a = t.x + dx[i], b = t.y + dy[i]; if (a < 0 || a >= n || b < 0 || b >= m) continue; if (dis[a][ b] != -1) continue; dis[a][ b] = dis[t.x][t.y] + 1; q.push({a, b}); } } } int main() { cin >> n >> m; for (int i = 0; i < n; i++) scanf("%s", g[i]); bfs(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) printf("%d ", dis[i][j]); puts(""); } return 0; } -
0
#include <bits/stdc++.h> using namespace std; const int N = 1010; int n, m; char g[N][N]; struct Node { int x, y; }; int dis[N][N]; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, 1, 0, -1}; void bfs() { memset(dis, -1, sizeof dis); queue<Node> q; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (g[i][j] == '1') dis[i][j] = 0, q.push({i, j}); while (q.size()) { auto t = q.front(); q.pop(); for (int i = 0; i < 4; i++) { int a = t.x + dx[i], b = t.y + dy[i]; if (a < 0 || a >= n || b < 0 || b >= m) continue; if (dis[a][ b] != -1) continue; dis[a][ b] = dis[t.x][t.y] + 1; q.push({a, b}); } } } int main() { cin >> n >> m; for (int i = 0; i < n; i++) scanf("%s", g[i]); bfs(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) printf("%d ", dis[i][j]); puts(""); } return 0; }
- 1
信息
- ID
- 1088
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 168
- 已通过
- 69
- 上传者