1037: 排兵布阵(加强版)

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:115 Solved:26

Description

佳佳又在玩一个有趣的单机塔防游戏。

已知一个N*N的地图上,有一些地方是空地,以‘.’表示;还有一些地方是墙,以‘X’表示。现在佳佳想要在这个地图上放置一些低射炮台。炮台的射程是一个十字,如下所示:

OOPOO

OOPOO

P PPP P

OOPOO

OOPOO

炮台的放置必须满足下列两个要求:

1.炮台必须架设在空地上,不可以放置在墙‘X’上。

2.炮台与炮台之间不可以相互攻击,也就是说任意一个炮台不可以在其它炮台的射程范围之内。

炮台的射程会被墙挡住,比如在下列地图中,两个炮台不会相互攻击:

OOOOO

OPXPO

OOOOO

OOOOO

OOOOO

       现在佳佳想要知道,他最多能够在这张地图上放置多少个炮台呢?

Input

输入文件名为 soldier.in

输入第一行有一个整数N,表示地图的长度和宽度为N*N。

接下来是一个N*N的矩阵aij描述这张地图,地图仅包含’X’和’.’。

Output

输出文件名为 soldier.out

输出共 1行,表示佳佳最多在地图上放置多少炮台。

Sample Input Copy

4
.X..
....
XX..
....

Sample Output Copy

5

HINT

【输入输出样例2】

soldier.in

soldier.out

4

....

....

....

....


4




【样例解释】

     第一个样例的一种合法摆放方式:




【数据范围】

     对于100%的数据1N ≤8