From 99e2e923d0c77b02f3fb4ff648ea916954868606 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- store/works/solutions/acwing/1233.cpp | 69 +++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 store/works/solutions/acwing/1233.cpp (limited to 'store/works/solutions/acwing/1233.cpp') diff --git a/store/works/solutions/acwing/1233.cpp b/store/works/solutions/acwing/1233.cpp new file mode 100644 index 0000000..117b2fb --- /dev/null +++ b/store/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