packages feed

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