描述
小王最近编程能力得到了飞速提升,他为自己的智能汽车编写了程序。他需要训练智能汽车让它按照指定要求移动。小王把智能汽车放在一个$ N \times M$的网格里并且他随机在格子的某些位置放置上不可以移动的障碍物。<br>
小王把智能汽车放在网格中心的格点上,他现在要训练智能汽车让求花最少时间到达指定位置。<br>
智能汽车本身也有自己的直径,所以有障碍物的格子的四个格点智能汽车都不能到达。<br>
智能汽车有固定可执行的指令,每个指令所需要的执行时间为1秒。可以执行的指令如下:<br>
向正前方行走1步(Step1);<br>
向正前方行走2步(Step2);<br>
向正前方行走3步(Step3);<br>
向左转(Left);<br>
向右转(Right)。<br>
智能汽车要保证整个都在网格里才能执行程序,请你帮忙计算一下智能汽车完成任务所需的最少时间。
输入
从文件 car.in 中读入数据。<br>
第一行为两个正整数$ N,M(1 ≤ N, M ≤ 1000)$,表示网格的大小。<br>
接下来$N$行$M$列是网格的具体情况,0表示无障碍,1表示有障碍。<br>
接下来有一行4个整数$x_1,y_1,x_2,y_2$和1个大写字母,分别为起始点$(x_1,y_1)$和目标点$(x_2,y_2)$的左上角网格的行与列。大写字母表示起始时的面对方向(东:E,南:S,西:W,北:N)。<br>
数与数,数与字母之间均用一个空格隔开。<br>
注意:终点的面向方向是任意的,没有要求。
输出
输出到文件 car.out 中。<br>
一个整数,表示智能汽车完成任务所需的最少时间。如果无法到达,则输出−1。
样例
提示
【样例1解释】<br>
如下图所示,白色为无障碍,黑色为有障碍。时间最少路线为下图染色那一条,每个颜色段花一秒,共七秒。另外,途中共有五次转向,共五秒。总时间:7+5=12秒。<br>
$5 \leq N,M \leq 10^3$

关注我们