class Solution {
public:
int dx[4] = {0,-1,0,1};
int dy[4] = {-1,0,1,0};
void solve(vector<vector<char>>& board) {
if(board.empty()) return;
vector<vector<bool>>vis(board.size(),vector<bool>(board[0].size(),0));
for(int i = 0;i<board.size();i++)
{
dfs(i,0,board,vis);
dfs(i,board[i].size()-1,board,vis);
}
for(int j = 0;j<board[0].size();j++)
{
dfs(0,j,board,vis);
dfs(board.size()-1,j,board,vis);
}
for(int i = 0;i<board.size();i++)
{
for(int j = 0;j<board[i].size();j++)
{
if(board[i][j] == 'A') board[i][j] = 'O';
else board[i][j] = 'X';
}
}
}
void dfs(int x,int y,vector<vector<char>>& board,vector<vector<bool>>vis)
{
if(board[x][y] == 'O' && !vis[x][y])
{
board[x][y] = 'A';
vis[x][y] = true;
for(int i = 0;i<4;i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
if(nx>=0 && nx <board.size() && ny >=0 && ny < board[0].size())
dfs(nx,ny,board,vis);
}
}
}
};