#include #include #include using namespace std; const int N = 50; char tiles[N + 5][N + 5]; bool visited[N + 5][N + 5]; int dx[4] = {-1, 1, 0, 0}; int dy[4] = {0, 0, -1, 1}; bool in_range(int x, int y, int rows, int cols) { return x >= 0 && x < rows && y >= 0 && y < cols; } int dfs(int x, int y, int rows, int cols) { if (!in_range(x, y, rows, cols) || visited[x][y] || tiles[x][y] == 'B') { return 0; } visited[x][y] = true; int size = 1; for (int i = 0; i < 4; ++i) { int px = x + dx[i]; int py = y + dy[i]; size += dfs(px, py, rows, cols); } return size; } int find_largest_area(int rows, int cols) { int max_size = 0; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (!visited[i][j] && tiles[i][j] == 'A') { int size = dfs(i, j, rows, cols); max_size = max(max_size, size); } } } return max_size; } int main() { int n; cin >> n; for (int x = 0; x < n; x++) for (int y = 0; y < n; y++) cin >> tiles[x][y]; int max_chunk = 0; for (int x = 0; x < n; x++) { for (int y = 0; y < n; y++) { if (tiles[x][y] == 'A') continue; tiles[x][y] = 'A'; memset(visited, 0, sizeof visited); max_chunk = max(max_chunk, find_largest_area(n, n)); tiles[x][y] = 'B'; } } cout << max_chunk << endl; }