Let T be the spanning tree rooted at the start vertex produced by the depth-first search of a connected, undirected graph, G. Argue why every edge of G, not in T, goes from a vertex in T to one of its ancestors, that is, it is a back edge. Hint: Suppose that such a nontree edge is a cross edge, and argue based upon the order the DFS visits the end vertices of this edge how this leads to a contradiction. Solution Before we answer this question we will revise certain definitions: 1. A connected graph is a graph that has path from any vertex to any other vertex in the graph. 2. Spanning tree is a tree that covers all the vertices of the graph. 3. DFS, also known as Depth first search traverses a graph in the following order. To create the DFS tree from a graph what it does is the following, It takes a starting vertex and then keeps all the edges of the vertices that are NEIGHBOURS to the starting vertex. Then for each neighbouring vertex it keeps all the edges of the neighbours of the current vertex provided the new neighbours are not already present in the tree. Now, coming to our question. As DFS takes each vertex v and covers its neighbours (which are not already covered) by doing this the vertex v becomes parents of the neighbours that it is going to cover. So, if there is an edge that joins v and an uncovered neighbour x then edge v---x will belong to the DFS tree T. So the only edges left out is the edges like x---v because v cannot be a child to x as it is alread a parent of x. Similarly we can see that for any pair of vertices w and y such that if w is an ancestor of y in T then a path from w---y exists in T. obviously no path from y----w exists in T given the nature of DFS. Therefore if G has the path y---w that will not be present in T. This is how we can say that every edge of G, not in T , goes from a vertex in T to one of its ancestors, that is, it is a back edge. Because if it wasn\'t a back edge then it would be covered in the DFS tree T..