Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int counts = 0;
- int rows, cols;
- void floodfill(int x, int y, char grid[1000][1000])
- {
- if (grid[x][y] == '#')
- {
- return;
- }
- grid[x][y] = '#';
- counts++;
- if (grid[x][y+1] != '*' && y+2<cols)//go right
- {
- floodfill(x,y+2, grid);
- }
- if (grid[x][y-1]!='*' && y-2> 0)//go left
- {
- floodfill(x,y-2,grid);
- }
- if (grid[x+1][y] != '*' && x+2<rows)//go down
- {
- floodfill(x+2,y,grid);
- }
- if (grid[x-1][y] != '*' && x-2>0)//go up
- {
- floodfill(x-2,y,grid);
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- int tc;
- cin >> tc;
- for (int i = 0; i < tc; ++i)
- {
- cout << "Case " << i+1 << ": ";
- int row, col;
- cin >> row >> col;
- char grid[row][col];
- for (int j = 0; j < row; ++j)
- {
- for (int k = 0; k < col; ++k)
- {
- cin >> grid[j][k];
- }
- }
- int new_row = row+(row-1);
- int new_col = col+(col-1);
- char grid2[new_row][1000] = {' '};
- int tmp_j = 0;
- for (int j = 0; j < new_row; j+=2)
- {
- int tmp_k = 0;
- for (int k = 0; k < new_col; k+=2)
- {
- grid2[j][k] = grid[tmp_j][tmp_k++];
- }
- tmp_j++;
- }
- for (int j = 0; j < new_row; j+=2)
- {
- for (int k = 0; k < new_col; k+=2)
- {
- if (grid2[j][k] == 'D')
- {
- grid2[j+1][k] = '*';//down
- }
- if (grid2[j][k] == 'B')
- {
- grid2[j+1][k] = '*';//down
- grid2[j][k+1] = '*';//right
- }
- if (grid2[j][k] == 'R')
- {
- grid2[j][k+1] = '*';//right
- }
- }
- }
- counts = 0;
- rows = new_row;
- cols = new_col;
- for (int i = 1; i < new_col; i+=2)
- {
- if (grid2[0][i] != '*')
- {
- floodfill(1, i, grid2);
- }
- }
- cout << counts << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement