Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <cstdint>
- #include <iostream>
- #include <string>
- #include <queue>
- #include <vector>
- using namespace std;
- void Dfs(vector<string>& floor, vector<vector<bool>>& is_visited, int i, int j) {
- is_visited[i][j] = true;
- for (int di = -1; di <= 1; ++di) {
- for (int dj = -1; dj <= 1; ++dj) {
- int ni = i + di;
- int nj = j + dj;
- if (ni < 0 || floor.size() <= ni || nj < 0 || floor.front().size() <= nj) continue;
- if (is_visited[ni][nj]) continue;
- if (floor[i][j] == floor[ni][nj]) continue;
- Dfs(floor, is_visited, ni, nj);
- }
- }
- }
- int main() {
- const int FLOOR_SIDE_SIZE = 8;
- vector<string> floor(FLOOR_SIDE_SIZE);
- for (string& row : floor) cin >> row;
- vector<vector<bool>> is_visited(FLOOR_SIDE_SIZE, vector<bool>(FLOOR_SIDE_SIZE, false));
- int cnt = 0;
- for (int i = 0; i < FLOOR_SIDE_SIZE; ++i) {
- for (int j = 0; j < FLOOR_SIDE_SIZE; ++j) {
- if (is_visited[i][j]) continue;
- Dfs(floor, is_visited, i, j);
- ++cnt;
- }
- }
- cout << cnt;
- return 0;
- }
- /*
- test1
- WBWBWBBW
- BWBBWBWB
- WBWWBWBW
- WBWWBWWB
- BWBBWBWB
- WBWBWWBW
- BWBWBBWB
- WBWBWWBW
- 4
- */
Advertisement
Add Comment
Please, Sign In to add comment