城堡
时间限制:1秒 内存限制:256M
【题目描述】
个城堡的平面图被划分成 \(M×N\) 个正方形的单位,一个这样的单位可以有 0 到 4 面墙环绕。平面图的四周一定是墙。请仔细研究下面这个城堡平面图:
从图中可以看出,这个城堡有 5 个房间,大小分别是 9、7、3、1、8 个单位。并且移走 “->” 所指向的墙,会得到更大的房间:9 + 7 = 16,且是最大。
注意,题目给出城堡保证至少有 2 个房间,而且一定有一面墙可以被移走。
【输入格式】
第一行有两个整数:\(M\) 和 \(N\) 城堡的平面图有 \(N\) 行 \(M\) 列,用一个由数字组成的矩阵表示,一个数字表示一个单位,输入与样例的图一致。每一个单位的数字告诉我们这个单位的东、西、南、北是否有墙存在。每个数字是由以下四个整数的某个或某几个或一个都没有加起来的。
1: 在西面有墙
2: 在北面有墙
4: 在东面有墙
8: 在南面有墙
城堡内部的墙会被规定两次。比如说 (1,1) 南面的墙,亦会被标记为 (2,1) 北面的墙。
【输出格式】
输出包含如下 4 行:
第 1 行: 城堡的房间数目。
第 2 行: 最大的房间的大小。
第 3 行: 移除一面墙能得到的最大的房间的大小。
第 4 行: 移除哪面墙可以得到面积最大的新房间。选择最佳的墙来推倒:有多解时选最靠西的,仍然有多解时选最靠南的格子,如果这个格子有"N"(北)面墙或者"E"(东)推倒后都能得到同样大的新房间,优先选北面。
【输入输出样例】
Input
7 4
11 6 11 6 3 10 6
7 9 6 13 5 15 5
1 10 12 7 13 7 5
13 11 10 8 10 12 13
Output
5
9
16
4 1 E
【数据限制】
对于 \(100\%\) 的数据,\(1≤M,N≤50\)。
【来源】
Mr.he