package Ġpan de mic Ċ Ċ class ĠNetwork Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcity Links : ĠMutable Set < Linked C ities > ĊĠĠĠ Ġprivate Ġval Ġcities : ĠMutable Set < City > ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . city Links Ġ= ĠHashSet () ĊĠĠĠĠĠĠĠ Ġthis . cities Ġ= ĠHashSet () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcity ( city Name : ĠCity Name ?): ĠCity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcities . find Ġ{ Ġcity Ġ-> Ġcity . city Name Ġ== Ġcity Name Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġare Linked ( it : ĠCity Name , Ġcn : ĠCity Name ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcities Linked To ( it ). contains ( cn ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinf ect ( city Name : ĠCity Name ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcity ( city Name )?. inf ect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Linked C ities ( city : ĠCity , Ġcity 1 : ĠCity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcities . add ( city ) ĊĠĠĠĠĠĠĠ Ġcities . add ( city 1 ) ĊĠĠĠĠĠĠĠ Ġcity Links . add ( Linked C ities ( city . city Name , Ġcity 1 . city Name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcities Linked To ( city Name : ĠCity Name ): ĠSet < City Name > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcity Links . filter Ġ{ Ġit . city 1 Ġ== Ġcity Name Ġ}. map Ġ{ Ġit . city 2 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcity Links . filter Ġ{ Ġit . city 2 Ġ== Ġcity Name Ġ}. map Ġ{ Ġit . city 1 Ġ} ĊĠĠĠĠĠĠĠ Ġ). flatten (). toSet () ĊĠĠĠ Ġ} Ċ Ċ } Ċ