チーズ
14914 ワード
質問リンク
https://www.acmicpc.net/problem/2638
質問する
キー(Key)
試行錯誤
似たようなタイプの問題は何度も試したことがあるので、あまり悩んでいません.
コード#コード#
#include <iostream>
#include <queue>
using namespace std;
int n, m;
int maps[101][101];
bool vi[101][101];
queue<pair<int, int>> q;
int dx[4]{ 0,0,1,-1 };
int dy[4]{ 1,-1,0,0 };
bool solve() {
fill(&vi[0][0], &vi[100][101], false);
q.push({ 0,0 });
vi[0][0] = true;
while (!q.empty()) {
int x = q.front().first;
int y = q.front().second;
q.pop();
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx < 0 || nx >= n || ny < 0 || ny >= m) continue;
if (maps[nx][ny] >= 1) maps[nx][ny]++;
else {
if (!vi[nx][ny]) {
vi[nx][ny] = true;
q.push({ nx,ny });
}
}
}
}
bool check = false;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (maps[i][j] >= 3) {
maps[i][j] = 0;
check = true;
}
if (maps[i][j] >= 1) {
maps[i][j] = 1;
}
}
}
return check;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> maps[i][j];
}
}
int cnt = 0;
while (solve()) cnt++;
cout << cnt;
}
ポスト
これは簡単なbfs dfs問題である.
Reference
この問題について(チーズ), 我々は、より多くの情報をここで見つけました https://velog.io/@bgg01578/백준-2638-치즈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol