Submission #1120545

#TimeUsernameProblemLanguageResultExecution timeMemory
1120545vjudge1Tracks in the Snow (BOI13_tracks)C++17
29.58 / 100
994 ms599960 KiB
#include <bits/stdc++.h>
using namespace std;

void dfs(const vector<vector<char>> &arr, vector<vector<char>> &visited, int i,
         int j, char first) {
  if (i >= (int)arr.size() or i < 0 or j >= (int)arr[i].size() or j < 0 or
      visited[i][j] or arr[i][j] != first) {
    return;
  }
  visited[i][j] = true;

  dfs(arr, visited, i + 1, j, first);
  dfs(arr, visited, i - 1, j, first);
  dfs(arr, visited, i, j + 1, first);
  dfs(arr, visited, i, j - 1, first);
}

int main() {

  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);

  int n, m, ans = 0;
  cin >> n >> m;

  vector<vector<char>> arr(n, vector<char>(m));
  vector<vector<char>> visited(n, vector<char>(m, false));
  for (vector<char> &v : arr) {
    for (char &c : v) {
      cin >> c;
    }
  }

  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (arr[i][j] == '.' or visited[i][j]) {
        continue;
      }

      dfs(arr, visited, i, j, arr[i][j]);
      ans++;
    }
  }

  cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...