#P2549. 走迷宫【Hard】

走迷宫【Hard】

题目描述

给定一个 n×mn \times m 网格,小维站在网格 (x,y)(x,y) 上并且想要到达 (s,t)(s,t)。网格中只包含 00 或 11 ,其中 00 代表可以走的路,11 表示不可通过的墙壁。他每一步可以向上、向下、向左或向右(不能走出网格),请你帮他计算一下,能否到达 (s,t)(s,t) 。若能到达,输出到达 (s,t)(s,t) 的最短步数。

输入格式

第一行包含两个正整数 n,m(1≤n,m≤1000)n,m(1 \leq n,m \leq 1000)。

接下来 nn 行,每行包含 mm 个整数 (00 或 11)表示完整的二维数组迷宫。

最后一行输入四个整数x,y,s,tx,y,s,t,意义如题面所示。

输出格式

第一行输出 YES或 NO,表示能否从 (x,y)(x, y) 移动至 (s,t)(s,t) 。

若能走到,第二行输出最短步数。

样例

5 5
0 1 0 0 0
0 1 0 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0
1 1 5 5
YES
8