1. Skip subtrees that have already been visited when searching for
dependent cliques;
2. Avoid copying shared_ptrs (which needs extra expensive atomic
operations) in the searching. Use const Clique* instead of
sharedClique whenever possible;
3. Use std::unordered_set instead of std::set to improve average
searching speed.