https://medium.com/@monocosmo77/studying-the-shortest-path-problem-part2-computer-science-91d473328cdf