From c3ea801238646fe7a54b29a244d59cbfaabd0903 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 12 Mar 2021 15:39:09 +0800 Subject: import(solutions): Add acwing problem 1233. --- works/solutions/acwing/1233.cpp | 69 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 works/solutions/acwing/1233.cpp (limited to 'works') diff --git a/works/solutions/acwing/1233.cpp b/works/solutions/acwing/1233.cpp new file mode 100644 index 0000000..117b2fb --- /dev/null +++ b/works/solutions/acwing/1233.cpp @@ -0,0 +1,69 @@ +#include +#include + +const int M = 1010; + +int N; +char map[M][M]; +bool visited[M][M]; + +int not_sink_count; + +const std::pair moves[]{{1, 0}, {0, 1}, {-1, 0}, {0, -1}}; + +void dfs(int r, int c) { + if (visited[r][c]) + return; + if (map[r][c] != '#') + return; + + visited[r][c] = true; + + bool sink = false; + + for (const auto &move : moves) { + if (map[r + move.first][c + move.second] == '.') { + sink = true; + break; + } + } + + if (!sink) { + not_sink_count++; + } + + for (const auto &move : moves) { + dfs(r + move.first, c + move.second); + } +} + +int main() { + std::ios_base::sync_with_stdio(false); + std::cin.tie(nullptr); + + std::cin >> N; + + for (int i = 1; i <= N; i++) { + for (int j = 1; j <= N; j++) { + std::cin >> map[i][j]; + } + } + + int result = 0; + + for (int i = 1; i <= N; i++) { + for (int j = 1; j <= N; j++) { + if (map[i][j] == '#' && !visited[i][j]) { + dfs(i, j); + if (not_sink_count == 0) { + result++; + } + not_sink_count = 0; + } + } + } + + std::cout << result; + + return 0; +} -- cgit v1.2.3