Thinking Steps
Type 1 : with multiple states
- Figure out kinds of states.
- For each state, we have different actions.
- when mark visited, when pop out of queue.
Figure out start state / termination state.
eg. start state doesn't have to be one, possibly be a group of states. "global init"