Source: https://www3.nd.edu/~kogge/courses/cse60742-Fall2018/Public/StudentWork/Paradigms/NetworkX-Sikdar.pdf