結果
| 問題 |
No.307 最近色塗る問題多くない?
|
| コンテスト | |
| ユーザー |
maine_honzuki
|
| 提出日時 | 2021-05-14 19:58:31 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,713 bytes |
| コンパイル時間 | 2,122 ms |
| コンパイル使用メモリ | 208,156 KB |
| 最終ジャッジ日時 | 2025-01-21 11:04:41 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 32 WA * 4 |
ソースコード
//https://ncode.syosetu.com/n4830bu/307/
#include <bits/stdc++.h>
using namespace std;
int main() {
int H, W;
cin >> H >> W;
vector A(H, vector(W, 0));
for (auto&& V : A) {
for (auto&& a : V) {
cin >> a;
}
}
int Q;
cin >> Q;
auto maine = [&](int h, int w) {
return h * W + w;
};
auto book = [&](int x) {
return make_pair(x / W, x % W);
};
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
int cnt = 0, clr = -1;
while (Q--) {
int R, C, X;
cin >> R >> C >> X;
R--;
C--;
if (cnt > H + W) {
clr = X;
continue;
}
if (A[R][C] == X)
continue;
cnt++;
vector seen(H, vector(W, false));
queue<pair<int, int>> que;
que.push({R, C});
seen[R][C] = true;
while (!que.empty()) {
auto [h, w] = que.front();
que.pop();
for (int i = 0; i < 4; i++) {
int h_nxt = h + dx[i], w_nxt = w + dy[i];
if (h_nxt >= 0 && h_nxt < H && w_nxt >= 0 && w_nxt < W) {
if (!seen[h_nxt][w_nxt] && A[h_nxt][w_nxt] != X) {
seen[h_nxt][w_nxt] = true;
que.push({h_nxt, w_nxt});
}
}
}
}
for (int h = 0; h < H; h++) {
for (int w = 0; w < W; w++) {
if (seen[h][w])
A[h][w] = X;
}
}
}
for (int h = 0; h < H; h++) {
for (int w = 0; w < W; w++) {
cout << (clr == -1 ? A[h][w] : clr) << " \n"[w == W - 1];
}
}
}
maine_honzuki