package Ġh ong wei . leetcode . playground . leetcode cba Ċ Ċ import Ġh ong wei . leetcode . playground . common . print Ċ Ċ class ĠM 1 4 6 6 Re order Routes 2 Make All Paths Lead 2 the City Zero Ġ{ ĊĠĠĠ Ġfun Ġtest () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( int ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 3 ), Ġint ArrayOf ( 2 , Ġ 3 ), Ġint ArrayOf ( 4 , Ġ 0 ), Ġint ArrayOf ( 4 , Ġ 5 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( int ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 2 ), Ġint ArrayOf ( 3 , Ġ 2 ), Ġint ArrayOf ( 3 , Ġ 4 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( int ArrayOf ( 4 , Ġ 3 ), Ġint ArrayOf ( 2 , Ġ 3 ), Ġint ArrayOf ( 1 , Ġ 2 ), Ġint ArrayOf ( 1 , Ġ 0 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġonly Test Index Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ ĠtestData . forEach Indexed Ġ{ Ġi , Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(!( only Test Index Ġ>= Ġ 0 Ġ&& Ġonly Test Index Ġ!= Ġi )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput 1 Ġ= Ġdata [ 0 ] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput 2 Ġ= Ġdata [ 1 ] Ġas ĠArray < IntArray > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Output Ġ= Ġdata [ 2 ] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġmin Re order ( input 1 , Ġinput 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expected Output Ġ== Ġoutput ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" test [$ i ] Ġpassed .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" test [$ i ] ĠFAILED !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmin Re order ( n : ĠInt , Ġconnections : ĠArray < IntArray >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreachable C ities Ġ= Ġhash Set Of < Int >(). apply Ġ{ Ġadd ( 0 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġto Process City List Ġ= Ġmutable ListOf < IntArray >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( connections ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġto Process City List Next Round : ĠMutable List < IntArray > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( to Process City List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Process City List Next Round . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġto Process City List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdepart ure City Ġ= Ġto Process City List [ i ]. first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdestination City Ġ= Ġto Process City List [ i ]. last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reachable C ities . contains ( destination City )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreachable C ities . add ( depart ure City ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( reachable C ities . contains ( depart ure City )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreachable C ities . add ( destination City ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Process City List Next Round . add ( to Process City List [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Process City List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Process City List . addAll ( to Process City List Next Round ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠ Ġ} Ċ } Ċ Ċ /* Ċ https :// leetcode . com / problems / reorder - routes - to - make - all - paths - lead - to - the - city - zero / Ċ Ġ*/