Interpret adjacency lists for algorithms (#713)

Interpret adjacency lists for algorithms (#713)

Traverse neighbours efficiently from list representation.