#include <bits/stdc++.h>
using namespace std;
void dfs(int row, int col, int H, int W, vector<vector<char>>* grid, set<pair<int, int>>* visited, int* rabbit, int* fox) {
if (row < 0 || col < 0 || col >= W || row >= H || (*grid)[row][col] == '.' || visited->find({row, col}) != visited->end()) {
return;
}
visited->insert({row, col});
if ((*grid)[row][col] == 'R') {
*rabbit = 1;
}
if ((*grid)[row][col] == 'F') {
*fox = 1;
}
dfs(row+1, col, H, W, grid, visited, rabbit, fox);
dfs(row-1, col, H, W, grid, visited, rabbit, fox);
dfs(row, col+1, H, W, grid, visited, rabbit, fox);
dfs(row, col-1, H, W, grid, visited, rabbit, fox);
}
int main () {
int H, W;
cin >> H >> W;
vector< vector<char> > grid;
char val;
for (int i=0; i<H; i++) {
for (int j=0; j<W; j++) {
cin >> val;
grid[i].push_back(val);
}
}
set<pair<int, int>> visited;
int ans = 0;
for (int row=0; row<H; row++) {
for (int col=0; col<W; col++) {
if (grid[row][col] == '.' || visited.find({row, col}) != visited.end()) {
continue;
}
int rabbit = 0;
int fox = 0;
dfs(row, col, H, W, &grid, &visited, &rabbit, &fox);
ans += rabbit;
ans += fox;
}
}
cout << ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |