import Ġjava . util .* Ċ import Ġkotlin . collections . HashSet Ċ Ċ // https :// leetcode . com / problems / network - delay - time / Ċ class ĠNetwork Delay Time Ġ{ ĊĊĠĠĠ Ġfun Ġnetwork Delay Time ( times : ĠArray < IntArray >, ĠN : ĠInt , ĠK : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgraph Ġ= Ġcreate Graph ( times ) ĊĠĠĠĠĠĠĠ Ġval Ġdistances Ġ: ĠMutable Map < Int , Node > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġval Ġexplo red : ĠMutable Set < Int > Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== ĠK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode ( i , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNode ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistances [ i ] Ġ= Ġnode ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġun explo red Ġ= Ġdistances . values . sorted By Ġ{ Ġit . distance Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( un explo red . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġun explo red . remove At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraph . get OrDefault ( current . id , ĠlistOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! explo red . contains ( it . to ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnode Ġ= Ġdistances [ it . to ] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtmp Distance Ġ= Ġcurrent . distance Ġ+ Ġit . cost ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Distance Ġ< Ġnode . distance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . distance Ġ= Ġtmp Distance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun explo red . sortBy Ġ{ Ġnode Ġ-> Ġnode . distance Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexplo red . add ( current . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( distances . values . any Ġ{ Ġit . distance Ġ== ĠInt . MAX _ VALUE Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdistances . values . map Ġ{ Ġit . distance Ġ}. max () !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Graph ( times : ĠArray < IntArray >): ĠMap < Int , ĠList < Edge >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtimes . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEdge ( it [ 0 ], Ġit [ 1 ], Ġit [ 2 ]) ĊĠĠĠĠĠĠĠ Ġ}. groupBy Ġ{ Ġit . from Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠEdge ( val Ġfrom : ĠInt , Ġval Ġto : ĠInt , Ġval Ġcost : ĠInt ) ĊĊĠĠĠ Ġdata Ġclass ĠNode ( val Ġid : ĠInt , Ġvar Ġdistance : ĠInt Ġ= ĠInt . MAX _ VALUE ) ĊĊ Ċ } ĊĊ