# adjacency list: graph["A"] = ["B", "C"] -- compact, fast to list neighbors

 # adjacency matrix: matrix["A"]["B"] = 1 -- O(1) edge check, O(V^2) space
 # choose the matrix for dense graphs and frequent "are u,v connected?" checks;
 # choose the list for sparse graphs, which most real networks are
