Submission #76270003
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
const int dy[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
const int dx[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
int main() {
int H;
cin >> H;
int W;
cin >> W;
vector<string> field(H);
for (int i = 0; i < H; i++) {
cin >> field.at(i);
}
// 各セルの最短距離 (訪れていないところは -1 としておく)
vector<vector<int> > dist(H, vector<int>(W, -1));
// 探索中に各マスはどのマスから来たのかを表す配列 (最短経路長を知るだけなら、これは不要)
vector<vector<int> > prev_x(H, vector<int>(W, -1));
vector<vector<int> > prev_y(H, vector<int>(W, -1));
// 「一度見た頂点」のうち「まだ訪れていない頂点」を表すキュー
queue<pair<int, int> > que;
int sx, sy;
bool SSR = true;
bool SSSR = true;
for (int h = 0; h < H; ++h) {
for (int w = 0; w < W; ++w) {
if (field[h][w] == '#') {
SSR = true;
SSSR = true;
for (int i = 0; i < 8; i++) {
int next_x = h + dx[i];
int next_y = w + dy[i];
if (next_x < 0 || next_x > H-1 || next_y < 0 || next_y > W-1) {
continue;
}
else if (field[next_x][next_y] == '.') {
SSR = false;
}
}
if (SSR) {
SSSR = false;
}
if (SSSR) {
sx = h;
sy = w;
que.push(make_pair(sx, sy));
dist[sx][sy] = 0;
}
}
SSR = true;
SSSR = true;
}
}
//実行
while (!que.empty()) {
pair<int, int> current_pos = que.front(); // キューの先頭を見る (C++ ではこれをしても pop しない)
int x = current_pos.first;
int y = current_pos.second;
que.pop(); // キューから pop を忘れずに
// 隣接頂点を探索
for (int direction = 0; direction < 8; ++direction) {
int next_x = x + dx[direction];
int next_y = y + dy[direction];
if (next_x < 0 || next_x >= H || next_y < 0 || next_y >= W) continue; // 場外アウトならダメ
// まだ見ていない頂点なら push
if (dist[next_x][next_y] == -1) {
que.push(make_pair(next_x, next_y));
dist[next_x][next_y] = dist[x][y] + 1; // (next_x, next_y) の距離も更新
prev_x[next_x][next_y] = x; // どの頂点から情報が伝播して来たか、縦方向の座標をメモ
prev_y[next_x][next_y] = y; // どの頂点から情報が伝播して来たか、横方向の座標をメモ
}
}
}
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
if (dist[i][j]%2 == 0) {
cout << '#';
}
else {
cout << '.';
}
}
cout << endl;
}
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Repeatedly Repainting |
| User | KOJIKEE |
| Language | C++23 (GCC 15.2.0) |
| Score | 425 |
| Code Size | 3177 Byte |
| Status | AC |
| Exec Time | 55 ms |
| Memory | 21504 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 425 / 425 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample00.txt, sample01.txt, sample02.txt |
| All | sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample00.txt | AC | 1 ms | 3360 KiB |
| sample01.txt | AC | 1 ms | 3460 KiB |
| sample02.txt | AC | 1 ms | 3452 KiB |
| testcase00.txt | AC | 1 ms | 3408 KiB |
| testcase01.txt | AC | 1 ms | 3396 KiB |
| testcase02.txt | AC | 1 ms | 3452 KiB |
| testcase03.txt | AC | 1 ms | 3368 KiB |
| testcase04.txt | AC | 1 ms | 3364 KiB |
| testcase05.txt | AC | 27 ms | 17332 KiB |
| testcase06.txt | AC | 1 ms | 3368 KiB |
| testcase07.txt | AC | 27 ms | 14920 KiB |
| testcase08.txt | AC | 1 ms | 3368 KiB |
| testcase09.txt | AC | 1 ms | 3528 KiB |
| testcase10.txt | AC | 1 ms | 3460 KiB |
| testcase11.txt | AC | 1 ms | 3504 KiB |
| testcase12.txt | AC | 1 ms | 3492 KiB |
| testcase13.txt | AC | 1 ms | 3412 KiB |
| testcase14.txt | AC | 1 ms | 3372 KiB |
| testcase15.txt | AC | 1 ms | 3396 KiB |
| testcase16.txt | AC | 1 ms | 3432 KiB |
| testcase17.txt | AC | 1 ms | 3524 KiB |
| testcase18.txt | AC | 52 ms | 19544 KiB |
| testcase19.txt | AC | 53 ms | 20292 KiB |
| testcase20.txt | AC | 48 ms | 19188 KiB |
| testcase21.txt | AC | 1 ms | 3528 KiB |
| testcase22.txt | AC | 1 ms | 3536 KiB |
| testcase23.txt | AC | 1 ms | 3784 KiB |
| testcase24.txt | AC | 1 ms | 3784 KiB |
| testcase25.txt | AC | 40 ms | 19904 KiB |
| testcase26.txt | AC | 47 ms | 18460 KiB |
| testcase27.txt | AC | 49 ms | 21360 KiB |
| testcase28.txt | AC | 55 ms | 21504 KiB |
| testcase29.txt | AC | 52 ms | 18628 KiB |
| testcase30.txt | AC | 38 ms | 16388 KiB |
| testcase31.txt | AC | 38 ms | 16836 KiB |
| testcase32.txt | AC | 34 ms | 18248 KiB |
| testcase33.txt | AC | 40 ms | 16464 KiB |
| testcase34.txt | AC | 42 ms | 16236 KiB |
| testcase35.txt | AC | 44 ms | 15900 KiB |
| testcase36.txt | AC | 44 ms | 16164 KiB |
| testcase37.txt | AC | 48 ms | 16804 KiB |