eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Lines (2)

опубликовано 02.11.2010, 17:17:59

а в этой задаче есть чекер? или ответ решений просто сравнивается с ответом автора? так как тут может быть много правильных решений, вот даже с тестового примера: 1) ..++. .++.. 0+000 .++++ ....@ 2) ...+. .+++. 0+000 .++++ ....@ 3) ..++. .++.. 0+000 .+++. ...+@ 4)...

awpris ответил:
Чекер есть - он и проверяет.
опубликовано 28.02.2024, 12:34:57

include <iostream>

include <vector>

using namespace std;

void dfs(int i, int j, int m, int n, vector<vector<char>>& paper) { if (i < 0 || j < 0 || i >= m || j >= n || paper[i][j] != '#') { return; }

paper[i][j] = '.';


dfs(i + 1, j, m, n, paper);
dfs(i - 1, j, m, n, paper);
dfs(i, j + 1, m, n, paper);
dfs(i, j - 1, m, n, paper);

}

int countPieces(int m, int n, vector<vector<char>>& paper) { int count = 0; for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { if (paper[i][j] == '#') { dfs(i, j, m, n, paper); count++; } } } return count; }

int main() { int m, n; cin >> m >> n;

vector<vector<char>> paper(m, vector<char>(n));
for (int i = 0; i < m; ++i) {
    for (int j = 0; j < n; ++j) {
        cin >> paper[i][j];
    }
}

cout << countPieces(m, n, paper) << endl;

return 0;

}