https://medium.com/@anitkhelidze/dijkstras-algorithm-a-powerful-tool-for-modern-programming-4856f13c07b7