Submission #1176348

#TimeUsernameProblemLanguageResultExecution timeMemory
1176348julia_08Tracks in the Snow (BOI13_tracks)C++20
2.19 / 100
1222 ms1080872 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 4e3 + 10;

char a[MAXN][MAXN];

int marc[MAXN][MAXN];

int dx[] = {0, 0, 1, -1}, dy[] = {1, -1, 0, 0};

int n, m;

bool check(int i, int j){
  return i > 0 && j > 0 && i <= n && j <= m && !marc[i][j];
}

void dfs(int i, int j){

  marc[i][j] = 1;

  for(int k=0; k<4; k++){
    int ni = i + dx[k], nj = j + dy[k];
    if(check(ni, nj)) dfs(ni, nj);
  }

}

int main(){
  cin.tie(0)->sync_with_stdio(0);

  cin >> n >> m;

  for(int i=1; i<=n; i++){
    for(int j=1; j<=m; j++){
      cin >> a[i][j];
    }
  }

  int ans = 0;

  for(int i=1; i<=n; i++){
    for(int j=1; j<=m; j++){
      if(!marc[i][j]){
        if(a[i][j] == 'R') dfs(i, j), ans ++;
      }
    }
  }

  for(int i=1; i<=n; i++){
    for(int j=1; j<=m; j++){
      if(a[i][j] == 'F') marc[i][j] = 0;
    }
  }

  for(int i=1; i<=n; i++){
    for(int j=1; j<=m; j++){
      if(!marc[i][j]){
        if(a[i][j] == 'F') dfs(i, j), ans ++;
      }
    }
  }

  cout << ans << "\n";

  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...