제출 #1133853

#제출 시각아이디문제언어결과실행 시간메모리
1133853sidripperTracks in the Snow (BOI13_tracks)C++20
0 / 100
1 ms324 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...