fregel-1.2.0: sample-programs/sssp.fgl
{- single-source shortest path problem -}
data SVal = SVal { dist :: Int } deriving (Eq, Show)
sssp g =
let init v = SVal (if vid v == 1 then 0 else 100000) ;
step v prev curr =
let newdist = prev v .^ dist `min`
minimum [ prev u .^ dist + e | (e, u) <- is v ]
in SVal newdist
in fregel init step Fix g