Page 291, Exercise 6
To demonstrate that bicon works correctly, we must show that no edge appears in more than one biconnected component. This is equivalent to indicating that bicon partitions the graph into a forest of spanning trees with each tree representing one biconnected component.
To prove that a forest of spanning trees exists, we must establish that each tree in the forest excludes back edges. Recall that a back edge leads to a previously visited path, and hence introduces a cycle.
The bicon function uses the back edges to signal the start of a new biconnected component. It prints out the tree edges of a biconnected component until it encounters a back edge. At this point, it closes the spanning tree for the old biconnected component, and starts a new spanning tree for the next biconnected component. The result is a forest of spanning trees.