todo: graph definition Directed vs Undirected Weighted vs Unweighted How to represent a graph: Adjacency Matrix Adjacency List data-structures