package Ġabc Ċ Ċ import Ġutilities . debug Log Ċ import Ġjava . util .* Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġsc Ġ= ĠScanner ( System .` in `) ĊĠĠĠ Ġval Ġn Ġ= Ġsc . nextInt () ĊĠĠĠ Ġval Ġm Ġ= Ġsc . nextInt () ĊĠĠĠ Ġval Ġab Ġ= Ġ( 0 Ġuntil Ġm ). map Ġ{ Ġsc . next (). toInt () Ġto Ġsc . next (). toInt () Ġ} ĊĠĠĠ Ġprintln ( problem 2 0 4 c ( n , Ġm , Ġab )) Ċ } Ċ Ċ fun Ġproblem 2 0 4 c ( n : ĠInt , Ġm : ĠInt , Ġab : ĠList < Pair < Int , ĠInt >> ): ĠLong Ġ{ ĊĠĠĠ Ġval Ġroutes Ġ= ĠArray ( n Ġ+ Ġ 1 ) Ġ{ Ġmutable ListOf < Int >() Ġ} ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġm ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( a , Ġb ) Ġ= Ġab [ i ] ĊĠĠĠĠĠĠĠ Ġroutes [ a Ġ- Ġ 1 ]. add ( b Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġsum Ġ= Ġ 0 L ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġn ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdistances Ġ= ĠInt Array ( n ) Ġ{ Ġ- 1 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġparents Ġ= ĠInt Array ( n ) Ġ{ Ġ- 1 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġqueue Ġ= ĠArray Deque < Int >() ĊĠĠĠĠĠĠĠ Ġqueue . offer ( i ) ĊĠĠĠĠĠĠĠ Ġdistances [ i ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 1 L ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(! queue . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġqueue . poll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġroutes [ current ]. size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġroutes [ current ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( distances [ next ] Ġ!= Ġ- 1 ) Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistances [ next ] Ġ= Ġdistances [ current ] Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparents [ next ] Ġ= Ġcurrent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . offer ( next ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsum Ġ+= Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġsum Ċ }