// Textbook fragment 13.07 /** This class extends DFS to compute the connected components of a graph. */ public class ComponentsDFS extends DFS { protected Integer compNumber; // Connected component number protected Object COMPONENT = new Object(); // Connected comp. selector protected void setup() { compNumber = 1; } protected void startVisit(Vertex v) { v.put(COMPONENT, compNumber);} protected Integer finalResult(Integer dfsResult) { for (Vertex v : graph.vertices()) // check for any unvisited vertices if (v.get(STATUS) == UNVISITED) { compNumber += 1; // we have found another connected component dfsTraversal(v); // visit all the vertices of this component } return compNumber; } }