package Ġsep _ challenge 2 0 2 1 Ċ Ċ import Ġjava . util .* Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġgrid Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 1 , Ġ 1 , Ġ 0 ), ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 0 , Ġ 1 , Ġ 1 ), ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġresult Ġ= Ġshortest Path ( grid , Ġ 1 ) ĊĠĠĠ Ġassert ( result Ġ== Ġ 6 ) ĊĠĠĠ Ġprintln ( result ) Ċ } Ċ Ċ val Ġdirections Ġ= ĠarrayOf ( int ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ- 1 ), Ġint ArrayOf ( 0 , Ġ 1 )) Ċ Ċ fun Ġshortest Path ( grid : ĠArray < IntArray >, Ġk : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġm Ġ= Ġgrid . size ĊĠĠĠ Ġval Ġn Ġ= Ġgrid [ 0 ]. size ĊĠĠĠ Ġval Ġvisited Ġ= ĠArray ( grid . size ) Ġ{ ĠArray ( grid [ 0 ]. size ) Ġ{ ĠInt Array ( grid [ 0 ]. size Ġ* Ġgrid . size Ġ+ Ġ 1 ) Ġ} Ġ} ĊĠĠĠ Ġval Ġqueue : ĠQueue < IntArray > Ġ= ĠLinkedList () ĊĠĠĠ Ġqueue . add ( int ArrayOf ( 0 , Ġ 0 , Ġk , Ġ 0 )) ĊĠĠĠ Ġwhile Ġ(! queue . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġqueue . poll () ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġcurrent [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġj Ġ= Ġcurrent [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Remain Ġ= Ġcurrent [ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Dist Ġ= Ġcurrent [ 3 ] ĊĠĠĠĠĠĠĠ Ġif Ġ( visited [ i ][ j ][ current Remain ] Ġ== Ġ 1 ) Ġcontinue ĊĠĠĠĠĠĠĠ Ġvisited [ i ][ j ][ current Remain ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġm Ġ- Ġ 1 Ġ&& Ġj Ġ== Ġn Ġ- Ġ 1 ) Ġreturn Ġcurrent Dist ĊĠĠĠĠĠĠĠ Ġfor Ġ( direction Ġin Ġdirections ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew I Ġ= Ġi Ġ+ Ġdirection [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew J Ġ= Ġj Ġ+ Ġdirection [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new I Ġin Ġ 0 Ġuntil Ġm Ġ&& Ġnew J Ġin Ġ 0 Ġuntil Ġn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grid [ new I ][ new J ] Ġ== Ġ 1 Ġ&& Ġcurrent Remain Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( int ArrayOf ( new I , Ġnew J , Ġcurrent Remain Ġ- Ġ 1 , Ġcurrent Dist Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( grid [ new I ][ new J ] Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . add ( int ArrayOf ( new I , Ġnew J , Ġcurrent Remain , Ġcurrent Dist Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ- 1 Ċ } ĊĊ