https://www.somethingsblog.com/2024/10/16/dijkstras-algorithm-explained/