제출 #1120507

#제출 시각아이디문제언어결과실행 시간메모리
1120507vjudge1Tracks in the Snow (BOI13_tracks)C++17
2.19 / 100
383 ms32444 KiB
#include <bits/stdc++.h>
using namespace std;

void dfs(const vector<vector<char>> &arr, vector<vector<char>> &visited, int i,
         int j, int &ans, char &sawFox, char &sawRabbit) {
  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] == '.') {
    return;
  }
  visited[i][j] = true;

  if (arr[i][j] == 'F' and !sawFox) {
    sawFox = true;
    ans++;
  }
  if (arr[i][j] == 'R' and !sawRabbit) {
    sawRabbit = true;
    ans++;
  }

  dfs(arr, visited, i + 1, j, ans, sawFox, sawRabbit);
  // dfs(arr, visited, i - 1, j, ans, sawFox, sawRabbit);
  dfs(arr, visited, i, j + 1, ans, sawFox, sawRabbit);
  // dfs(arr, visited, i, j - 1, ans, sawFox, sawRabbit);
}

int main() {

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

  int n, m, ans = 0;
  char b1, b2;
  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;
      }

      b1 = b2 = false;
      dfs(arr, visited, i, j, ans, b1, b2);
    }
  }

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