Problem5734--曼哈顿距离

5734: 曼哈顿距离

Time Limit: 3.000 Sec  Memory Limit: 256 MB
Submit: 6  Solved: 2
[Submit] [Status] [Web Board] [Creator:]

Description

众所周知,变色龙是蜥蜴的一种。

很久很久以前,变色龙小S生活在一片平和的n*m网格中。每个格子中都有一个颜色,小S可以变成和格子一样的颜色。如果小S从一个格子跳到另一个格子,且格子颜色不同,小S可以变成新的格子颜色,当然也可以不变,只不过有点危险。

由于一直变颜色太累了,小S希望能找到一片颜色相同的格子区域,它就一直在这片区域活动就可以了。现在它希望知道,哪一片区域的曼哈顿距离之和最大。

我们定义(x1,y1)(x2,y2)两点间的曼哈顿距离为:|x2-x1|+|y2-y1|

一片同色区域的曼哈顿距离之和为:所有颜色相同的格子之间的曼哈顿距离两两之和。


Input

第一行输入两个整数n和m。

接下来输入一个n*m的网格,每个格子里都有一个颜色c[i][j]。

Output

输出所有同色区域中最小的曼哈顿距离之和



Sample Input

2 2
1 1
2 2

Sample Output

2

HINT

【输入样例2】
4 4
1 3 2 4
2 1 2 3
1 3 3 2
3 2 1 4

【输出样例2】
56

【样例解释】

在第一个示例中,不同的颜色值为1和2。

  1. 对于颜色

    1:

    • 颜色为1的坐标为(1,1)和(1,2)。

    • (1,1)和(1,1)之间的曼哈顿距离为∣1−1∣+∣1−1∣=0。

    • (1,1)和(1,2)之间的曼哈顿距离为∣1−1∣+∣1−2∣=1。

    • (1,2)和(1,1)之间的曼哈顿距离为∣1−1∣+∣2−1∣=1。

    • (1,2)和(1,2)之间的曼哈顿距离为∣1−1∣+∣2−2∣=0。

  2. 对于颜色

    2:

    • 颜色为2的坐标为(2,1)和(2,2)。

    • (2,1)和(2,1)之间的曼哈顿距离为∣2−2∣+∣1−1∣=0。

    • (2,1)和(2,2)之间的曼哈顿距离为∣2−2∣+∣1−2∣=1。

    • (2,2)和(2,1)之间的曼哈顿距离为∣2−2∣+∣2−1∣=1。

    • (2,2)和(2,2)之间的曼哈顿距离为∣2−2∣+∣2−2∣=0。

可以选1号或者2号,得到最大曼哈顿距离和为2

在第二个示例中,可以选择2号颜色,2号颜色共有5个点(1,3)(2,1)(2,3)(3,4)(4,2)。计算可得:

(|1-2|+|3-1| + |1-2|+|3-3| + |1-3|+|3-4| + |1-4|+|3-2| ) * 2 = 22

(|2-2|+|1-3| + |2-3|+|1-4| + |2-4|+|1-2|) * 2 = 18

(|2-3|+|3-4| + |2-4|+|3-2|) * 2 = 10

(|3-4|+|4-2|) * 2 = 6

曼哈顿距离之和为22+18+10+6=56,可知这已经是最大的距离。

【数据范围】

对于100%的数据,1<=n,m<=1000,1<=c[i,j]<=n*m

Subtask 1(20):1<=n,m<=100

Subtask 2(10):c[i,j]=1

Subtask 3(20):c[i,j]<=2

Subtask 4(50):无限制



Source/Category

 

[Submit] [Status]