199 tokens in Kotlin for part 2 by Vadzim Kapichenka
Download solution
funmain(){
valedges=generateSequence(::readLine).toList()
.associate{it.substringBefore(":")toit.substringAfter(" ").split(" ")}
valcaches=HashMap<String,HashMap<String,Long>>()
funcountPaths(from:String,to:String):Long=
caches.getOrPut(to){HashMap()}.getOrPut(from){
if(from==to)1elseedges[from]?.sumOf{countPaths(it,to)}?:0
}
val(s,a,b,f)=listOf("svr","dac","fft","out")
println(
countPaths(s,a)*countPaths(a,b)*countPaths(b,f)+
countPaths(s,b)*countPaths(b,a)*countPaths(a,f)
)
}