Given a graph G=(V,E) and a number k, compute a maximal subgraph where each vertex has degree >= k. Give them time to think about the problem and suggest solutions. This is their chance to practice for exam like problems. Mention this, so they actually spend time thinking! The overview of the solution is strongly tied to its own inductive proof. Suppose you have an algorithm kDEGREE-SUBGRAPH(G) that solves the problem for graphs of size n. If you have a graph of size (n+1), then find some node with degree < k (which can't be in the solution), and remove it. Now call recursively call your procedure, which by this induction hypothesis will correctly return a >=k degree subgraph. We just have to cover the base case when n=k, which requires G to be a complete graph. kDEGREE-SUBGRAPH(G) if (|V| == k) return IS-COMPLETE(G) else v = VERTEX-WITH-DEGREE-LT-K(G) if (degree(v)>= k) return G return kDEGREE-SUBGRAPH((V-{v}, E-{., v})) The recursion will go |V| times, and finding a vertex with small degree will take O(|E|) time. This is a running time of O(|V||E|).