Give an algorithm to detect whether a given undirected graph contains a cycle. If the
graph contains a cycle, then your algorithm should output one. (It should not output
all cycles in the graph, just one of them.) The running time of your algorithm should
be O(m + n) for a graph with n nodes and m edges.