#P1431. 消灭星星

    ID: 432 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>普及+/提高深度优先搜索广度优先搜索

消灭星星

消灭星星

题目描述

Orange最近迷上了消灭星星这款风靡的游戏,在游戏中,你最开始会得到一个由若干个联通块构成的 n×mn\times m 大小的矩阵。你每次可以选择3个及以上的连在一起的颜色相同的星星(即一个大小大于等于3的四连通块)进行消灭,同时你将会得到消灭星星总数个积分。

同时,游戏存在重力系统,如果你消灭了中间的星星,导致上方的物块不受支撑,那么他就会下落,直到遇到地面或者落到某个物块上。(注意:下落可能改变联通块的形状!)

现在,Orange将给你一个 n×mn \times m 的矩阵,其中每个元素的数字表示当前星星的颜色。现在,你需要帮助Orange找出一种方法,使得他的得分最大化,输出最大化的得分。

输入格式

输入第一行为两个整数 n,mn,m,表示矩阵大小。 接下来为一个 n×mn\times m 的矩阵。

数据范围

1n,m51 \le n, m \le 5 1aij101 \le a_{ij} \le 10

输出格式

输出一个整数,表示Orange最高的可能得分,即最多消灭的星星数量。

样例 #1

样例输入 #1

4 5
1 1 4 2 2
1 3 3 4 2
3 3 3 4 4
1 1 4 2 2

样例输出 #1

20

提示

一种可能的最优消除方法如下:

  1. 消除颜色3的联通块。
1 1 4 2 2 |       2 2
1 3 3 4 2 | 1     4 2
3 3 3 4 4 | 1 1 4 4 4
1 1 4 2 2 | 1 1 4 2 2
  1. 消除颜色4所在的联通块
      2 2 |          
1     4 2 | 1       2
1 1 4 4 4 | 1 1   2 2
1 1 4 2 2 | 1 1   2 2
  1. 最后消除颜色1和2所在的联通块,使得所有的星星被消灭,因此答案为20。