import Ġjava . util . Priority Queue Ċ Ċ class ĠFamily Travel Ġ{ ĊĠĠĠ Ġdata Ġclass ĠStop (@ Jvm Field Ġval Ġdist : ĠInt , Ġ@ Jvm Field Ġval Ġprev Dist : ĠInt , Ġ@ Jvm Field Ġval Ġsrc : ĠInt ) Ġ: ĠComparable < Stop > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠStop ): ĠInt Ġ= Ġdist Ġ- Ġother . dist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshortest ( edges : ĠArray < String >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġedges . first (). length ĊĠĠĠĠĠĠĠ Ġval Ġconverted Ġ= ĠArray ( edges . size ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġedges [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt Array ( m ) Ġ{ Ġj Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġc Ġ= Ġs [ j ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' a ' Ġ.. Ġ' z ' Ġ-> Ġc Ġ- Ġ' a ' Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' A ' Ġ.. Ġ' Z ' Ġ-> Ġc Ġ- Ġ' A ' Ġ+ Ġ 2 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 5 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Stop >() ĊĠĠĠĠĠĠĠ Ġq . add ( Stop ( 0 , Ġ 5 2 , Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmd Ġ= ĠArray ( m ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre Ġ= ĠInt Array ( 5 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre . fill ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmd [ 0 ][ 5 3 ] Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( q . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( d , Ġpd , Ġsrc ) Ġ= Ġq . poll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( src Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġd ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverted [ src ]. forEach Indexed Ġ{ Ġindex , Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ<= Ġpd ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnd Ġ= Ġd Ġ+ Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nd Ġ< Ġmd [ index ][ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmd [ index ][ i ] Ġ= Ġnd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq . add ( Stop ( nd , Ġi , Ġindex )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} Ċ } Ċ