Given an adjacency list `adj` and a `start` node, implement `dfs(adj, start)` returning the order nodes are visited by depth-first search, visiting neighbors in listed order.
+ 1 hidden test run on Submit.
DFS follows each branch to its end before backtracking. O(V + E) time.
Run your code to see results.