#L3200. 「eJOI2019」探险

「eJOI2019」探险

题目描述 本题译自 eJOI2019 Problem F. Awesome Arrowland Adventure

EJOI 25422542 在 Arrowland 举行。Arrowland 可以描述为一个 mm 行(编号为 00m1m-1nn 列(编号为 00n1n-1)的网格,每个单元格代表一个城市。令 (r,c)(r,c) 表示在第 rr 行第 cc 列的单元格。选手们住在单元格 (0,0)(0,0),比赛地在单元格 (m1,n1)(m-1,n-1)

Arrowland 的一个奇怪的景点是有些城市有巨大的箭头。更奇怪的是,这些箭头一次只能顺时针旋转 9090 度。初始时,每个箭头都指向东西南北四个方向之一。考虑到东道主国家的名字,EJOI 的组织者想要利用这些箭头。

选手们无论目前在哪里,都会盲目跟从箭头的指示前进。他们只会按照每个城市箭头的指示,从这个城市前往相邻的城市。如果他们进入的这个城市没有箭头,或者他们会离开 Arrowland,他们就会停在原地,并且永远不会到达比赛地了。因为 EJOI 的组织者想要选手们从他们的住处(单元格 (0,0)(0,0))到达比赛地,他们就可能需要旋转一些箭头的指向。请帮他们确定为了达成目标,最少需要旋转多少次箭头,或者无论箭头的指向是哪里,都不可能让选手到达比赛地。

输入格式 第一行包含两个整数 mmnn,分别表示行数和列数。

接下来 mm 行,每行 nn 个字符,表示初始箭头的朝向(N 表示向北,E 表示向东,S 表示向南,W 表示向西,X 表示这个单元格没有箭头)。最后一行的最后一个字符(即表示比赛地的字符)保证是 X。

在输入矩阵中,东西南北的方位和在通常地图中一样。因此,N 表示向上,E 表示向右,S 表示向下,W 表示向左。

输出格式 输出 EJOI 的组织者最少旋转箭头的次数。如果这个任务无法完成,输出 1-1

样例 1 输入:

text
3 3
EES
SSW
ESX

输出:

text
3

在这组数据中,一种最优解是将单元格 (1,2)(1,2) 中的 W 旋转三次变为 S。

样例 2 输入:

text
3 3
EES
SSW
EEX

输出:

text
0

在这组数据中,EJOI 的组织者不需要改变任何箭头的朝向,选手就可以到达比赛地。

样例 3 输入:

text
3 4
EXES
WSNS
XNNX

输出:

text
4

旋转单元格 (0,0)(0,0) 中的箭头一次(得到 S),旋转单元格 (1,0)(1,0) 中的箭头两次(得到 E),旋转单元格 (2,1)(2,1) 中的箭头一次(得到 E)。

数据范围与提示 对于 100100% 的数据,保证 1m,n5001 \le m, n \le 500

子任务

子任务 11:保证 m=1m = 1,每个字符是 E 或 X。

子任务 22:保证 m=1m = 1

子任务 33:保证 m=n=3m = n = 3

子任务 44:保证 m=2m = 2

子任务 55:没有附加限制。