add a DFS solution
add priority queue solution
add a new sol using the same dp algo and O(n) space
add a more clean code
add a new sol more fit the dfs template
add BFS solution
add some comment or more cleaner code to help understand