1. 程式人生 > >[Offer收割]程式設計練習賽27:題目2 : 兩個機器人

[Offer收割]程式設計練習賽27:題目2 : 兩個機器人

描述

一個N × M的2D迷宮中有兩個機器人。機器人A在迷宮左上角,只能向右或向下移動;機器人B在迷宮右下角,只能向左或向上移動。機器人不能移動到迷宮外。此外,由於奇怪的同步機制,這兩個機器人只能同時向相反的方向移動。也就是說或者機器人A向右同時機器人B向左;或者機器人A向下同時機器人B向上移動。  

迷宮中有一些格子存在障礙,機器人不能移動到有障礙的格子上。如果某個機器人的移動方向上的下一個格子有障礙,它會停在當前格子上;這時另一個機器人不受影響,仍能向相反方向移動。迷宮範圍之外可以視為全部都是障礙。

此外,兩個機器人在移動中不能“相撞”。相撞是指:  

1. 兩個機器人同時處在同一個格子上;

2. 兩個機器人在一次移動中互換位置。  

小Hi想知道,最少經過多少次移動可以使機器人A走到右下角,同時機器人B走到左上角。

輸入

第一行包含兩個正整數N和M。 (1 ≤ N, M ≤ 50)  

以下是一個N × M的01矩陣,其中0表示格子上沒有障礙,1表示格子上有障礙。

輸出

輸出一個整數代表最少移動的步數。如果目標不能達成,輸出-1。

樣例輸入