#6071. 迷宫探索

迷宫探索

题目描述

AA 正在参加一场迷宫探索竞赛。竞赛场地是一个由 NNMM 列方格组成的矩形迷宫。在迷宫中,部分方格是平坦的通道(用 . 表示),部分方格则是坚硬的墙壁(用 # 表示)。

为了快速了解迷宫的结构,小 AA 配备了一个高科技信号探测仪。小 AA 可以将其放置在迷宫中的任意一个通道方格 内。探测仪一旦启动,会同时向上、下、左、右 四个方向发射直线脉冲信号。

信号的传播规则如下:

  1. 信号只能在通道方格 中传播。
  2. 信号在每个方向上都会沿直线行进,直到遇到墙壁迷宫边界 为止。
  3. 被信号经过的所有通道方格(包括探测仪所在的那个方格)都会被探测仪记录下来。

AA 希望找出一个最佳的放置位置,使得探测仪单次发射信号能够记录到的通道方格数量最多。

请你编写程序,帮助小 AA 计算出,探测仪能记录到的通道方格的最大数量。

输入格式

输入第一行包含两个正整数 NNMM,表示迷宫的行数和列数。 接下来的 NN 行,每行包含一个长度为 MM 的字符串,代表迷宫的布局。其中 . 表示通道,# 表示墙壁,输入保证字符串中只包含这两种字符。

输出格式

输出一个整数,表示在最佳放置位置下,探测仪能够记录到的通道方格的最大数量。

样例 #1

样例输入 #1

4 6
#..#..
.....#
....#.
#.#...

样例输出 #1

8

样例 #2

样例输入 #2

8 8
..#...#.
....#...
##......
..###..#
...#..#.
##....#.
#...#...
###.#..#

样例输出 #2

13

样例 #3

样例输入 #3

12 15
...............
...#...........
.......#.......
...............
.....#.........
............#..
...............
..#............
...............
.......#.......
...............
....#..........

样例输出 #3

26

说明

样例 1 说明 若将探测仪放置在第 22 行第 22 列(行、列索引均从 1 开始计算):

  • 水平方向:可以探测到第 2 行中从第 1 列到第 5 列的所有通道(.),共 5 个方格。
  • 垂直方向:可以探测到第 2 列中从第 1 行到第 4 行的所有通道(.),共 4 个方格。
  • 合并记录:由于第 22 行第 22 列的方格在两个方向都被探测到了,因此总记录数为 5+41=85 + 4 - 1 = 8

经过验证,这是该迷宫中放置探测仪的最优方案。

数据范围

测试点编号 N,MN,M
11 N=1,M=1N=1,M=1
22 N=1,M2000N=1,M \le 2000
33 N2000,M=1N \le 2000,M = 1
44 N200,M200N \le 200,M \le 200
5105 \sim 10 N2000,M2000N \le 2000,M \le 2000

对于 100%100\% 的数据,满足 1N,M20001 \le N, M \le 2000。 输入数据保证迷宫中至少存在一个通道方格(.)。