During a depth-first search, a vertex can be classified as one of the following types: 1. Tree edges are edges in the depth-first forest G. Edge (u,v) is a tree edge if v was first discovered by exploring edge (u,v). A tree edge always describes a relation between a node and one of its direct descendants. This indicates that d[u] < d[v], (u’s discovery time is less than v’s discovery time), so a tree edge points from a “low” to a “high” node. 2. Back edges are those edges (u,v) connecting a vertex u to an ancestor u in a depth-first tree. Self-loops are considered to be back edges. Back edges describe descendant-to-ancestor relations, as they lead from “high” to “low” nodes. 3. Forward edges are those non-tree edges (u,v) connecting a vertex u to a descendant v in a depth-first tree. Forward edges describe ancestor-to-descendant relations, as they lead from “low” to “high” nodes. 4. Cross edges are all other edges. They can go between vertices in the same depth-first tree as long as one vertex is not an ancestor of the other, or they can go between vertices in different depth-first trees. Cross edges link nodes with no ancestor-descendant relation and point from “high” to “low” nodes.