#joi2016yof. [joi2016yo_f]屋台 (Food stalls)
[joi2016yo_f]屋台 (Food stalls)
问题
JOI 君所居住的 IOI 市,呈南北方向有 个区块,东西方向有 个区块,形状为长方形,拥有 个区块。从北向南数第 个区块,从西向东数第 个区块,记为 。现在,为了纪念在 IOI 市正在举办的国际程序设计竞赛,一场大规模的庆祝活动正在进行中。有一些区块摆放了摊位,并且每个摊位上销售不同种类的糖果。区块 、区块 以及与它们相邻的东、西、南、北方向上的区块没有摊位。
JOI 君要从区块 移动到区块 。为了尽可能缩短移动时间,JOI 君只能向东或向南移动。由于 JOI 君喜欢糖果,所以每进入一个区块,他会按顺序执行以下操作:
- 如果当前区块上有还未购买的糖果摊位,他会在该摊位购买糖果。
- 如果当前区块东、西、南、北方向上的相邻区块有还未购买的糖果摊位,他会从这些摊位中选择一个(除去其中一个)并召唤售货员购买糖果。
JOI 君不会重复购买同一种糖果。
给定 IOI 市的大小、摊位位置以及每个摊位上糖果的价格,请计算出 JOI 君在从区块 移动到区块 的过程中,所购买的糖果的总价的最小值。
输入
输入共有 行。
第一行包含两个整数 (,),两个整数之间用一个空格分隔。表示 IOI 市被分割为 个区块。
接下来的 行,每行包含有 个字符,表示 IOI 市中每个区块的信息。对于第 行中从左至右的第 个字符(,),如果该区块上没有摊位,则用 .
表示;如果该区块上摆放了摊位,则用 1
、2
、、9
中的一个数字表示,代表该摊位上糖果的价格。
在所给入力数据中,对于输入 ,区块上摆放的摊位数量不超过 。
输出
请以一行输出 JOI 君在从区块 移动到区块 的过程中,所购买的糖果的总价的最小值。
输入样例 1
5 5
..483
.59.9
3.866
79...
4.8..
输出样例 1
20
在样例输入 1 中,JOI 君按照以下顺序移动:区块 、区块 、区块 、区块 、区块 、区块 、区块 、区块 、区块 。他会在区块 、区块 、区块 出摊位上购买糖果,这样购买糖果的总价最小。
输入样例 2
12 10
..498522.4
.633527629
54.4621596
634.213458
1924518685
7739539767
276155.3.6
87716372.2
.858877595
7998739511
3438.5852.
568.9319..
输出样例 2
63