https://medium.com/@monocosmo77/studying-the-shortest-path-problem-part1-computer-science-767dcdf68eb2