use priority_queue Dijkstra speed up 100x