Implement bidirectional Dijkstra for shortest paths | Citi