問題:https://leetcode.com/problems/01-matrix/
マルチソース最短パス。彼らは広いブラシで検索し、ゼロにすることができたときに見つけ深く、広い口コミを検索を行う前に、この質問。
クラス解決{ パブリック: ベクトル <ベクトル< INT >> updateMatrix(ベクトル<ベクトル< INT >>&行列){ int型、M = matrix.size()。 INT、N =行列[ 0 ] .size()。 ベクター <ベクトル< INT >> RES(M、ベクトル< INT >(N - 1 ))。 キュー < 整数 > Q; 以下のために(int型 i = 0 ; iがm <; iは++ ) { ため(INT J = 0; J <nであり、j ++ ) { 場合(行列[I] [J] == 0 ) { RES [I] [J] = 0 ; q.push(私は N * + j)は、 } } } ベクトル < INT > DX { 0、1、0、 - 1 }。 ベクター < INT > DY { 1、0、 - 1、0 }。 しばらく(!q.empty()) { int型 CUR = q.front()。 q.pop(); int型 I = CUR / N; int型 J = CUR%N; 用(int型のk = 0 ; K < 4 ; kは++ ) { int型のx = I + DX [K]。 INT Y = J +のDY [K]。 もし(x> = 0 && Y> = 0 && X <M && Y < N) { 場合(RES [X] [Y] == - 1 ) { RES [X] [Y]= RES [I] [J] + 1 。 q.push(のx * nの+ Y)。 } } } } 戻りRES。 } }。