2354. [图论基础与应用-第七章]放置机器人

Robert是一个著名的工程师。一天,他的老板给他分配了一个任务。任务的背景是:给定一个m×n大小的地图,地图由方格组成,在地图中有3种方格——墙、草地和空地,他的老板希望能在地图中放置尽可能多的机器人。每个机器人都配备了激光枪,可以同时向4个方向(上、下、左、右)开枪。机器人一直待在最初始放置的方格处,不可移动,然后一直朝4个方向开枪。激光枪发射出的激光可以穿透草地,但不能穿透墙壁。机器人只能放置在空地。当然,老板不希望机器人互相攻击,也就是说,两个机器人不能放在同一行(水平或垂直),除非他们之间有一堵墙隔开。 给定一张地图,程序需要输出在该地图中可以放置的机器人的最大数目。

输入

输入文件的第1行为一个整数T (T≤11),代表测试数据的数目。对每个测试数据,第1行为两个整数m和n (1≤m, n≤50),分别代表地图的行和列的数目。接下来有m行,每行有n个字符,每个字符都是“#”,“*”或“o”,分别代表墙壁、草地、空地。

输出

对每个测试数据,首先在第1行输出测试数据的序号,格式为:Case :id,其中id是测试数据的序号,从1开始计数。第2行输出在该地图中可以放置的机器人最大数目。

样例

标准输入 复制文本
2
5 5
o***#
*###* 
oo#oo
***#o
#o**o
4 4
o***
*###
oo#o
***o
标准输出 复制文本
Case :1
4
Case :2
3
登录以提交代码。
单点时限 1 秒
内存限制 256 MB
提交 0
通过 0