shortest path BFS impl