| 记录编号 |
570997 |
评测结果 |
AAAAAAAAAAAAAAAA |
| 题目名称 |
32.[POI 1999] 位图 |
最终得分 |
100 |
| 用户昵称 |
lihaoze |
是否通过 |
通过 |
| 代码语言 |
C++ |
运行时间 |
0.000 s |
| 提交时间 |
2022-04-30 21:16:34 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include <bits/stdc++.h>
#define OPEN(_x) freopen(#_x".in", "r", stdin); freopen(#_x".out", "w", stdout)
#define rep(_x, _y, _z) for (int _x = (_y); _x <= (_z); ++ _x)
#define rep1(_x, _y, _z) for (int _x = (_y); _x < (_z); ++ _x)
#define fi first
#define se second
using i64 = long long;
using PII = std::pair<int, int>;
int n, m;
int g[183][183];
int dx[] = { 0, 0, 1, -1 };
int dy[] = { 1, -1, 0, 0 };
std::queue<PII> q;
bool is_valid(int x, int y) {
return x >= 0 && x < n && y >= 0 && y < m;
}
int main() {
OPEN(bit);
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin >> n >> m;
memset(g, 0x3f, sizeof g);
rep1(i, 0, n) {
std::string tmp;
std::cin >> tmp;
rep1(j, 0, m) if (tmp[j] == 49) {
g[i][j] = 0;
q.push({ i, j });
}
}
while (q.size()) {
PII t = q.front(); q.pop();
rep1(i, 0, 4) {
int nx = t.fi + dx[i];
int ny = t.se + dy[i];
if (is_valid(nx, ny))
if (g[nx][ny] > g[t.fi][t.se] + 1) {
g[nx][ny] = g[t.fi][t.se] + 1;
q.push({ nx, ny });
}
}
}
rep1(i, 0, n) {
rep1(j, 0, m) printf("%d ", g[i][j]);
puts("");
}
return 0;
}