題目大意:數組
開始一頭牛在 0 0 位置,即爲左下角,會有m個隕石落下來,第i個隕石會在ti時刻落在 xi yi 的位置,與其相鄰的四個點和其落到的點都會被毀掉,牛想要走到一個永遠不回有任何隕石砸到的地方,求走到這個地方的最小時間,若是走不到,則輸出-1.安全
要求:牛走過的路徑上,對於任何一個點,牛到這個點的時刻不得大於等於任何隕石會落在這個點上的時刻。(即,隕石一旦落在某個點上,那麼在這個時刻及之後,牛都不能夠從這點上走過)隊列
隕石落下的點的座標x y均在0-300之間,時間爲0-1000之間,m<=5000搜索
思路:im
數組Time[x][y]記錄點x y被砸到的最先時刻,假如從未被砸到,則設爲-1.走的過程當中,通過了哪個點,就把那個點的Time順便設置爲走到那裏的最先時刻,由於落下的隕石不會消失,因此假如通過一個地方,就不會須要再回來,由於即使晚點回來,狀況也只會變得更糟罷了。時間
走到一個Time爲-1的地方,則說明到達了安全點。
由於隕石落下的範圍僅僅是0-300 因此若是到了300之外的地方,基本就是是安全的了。
1.給Time標記
注意標記的時候要判斷是否已經被標記過了,若是是的,則更新爲較小值。——由於這個地方卡主幾回。
2.把Cow(X=0,Y=0,Time=0)壓入搜索隊列中,開始搜索。
每次從隊列首提出一個點,假如這個點的到達時刻>=隕石砸到這裏的時刻,則不繼續搜索,不然,拓展周邊四個點。
3.提取出的隊首的點若是隕石砸不到,則搜索到了安全點。