package graph; //begin#fragment CC import exceptions.InvalidKeyException; /** 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) { try{ v.put(COMPONENT, compNumber); } catch (InvalidKeyException e){ // } } protected Integer finalResult(Integer dfsResult) { try{ 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; } catch (InvalidKeyException e){ // } return null; } } //end#fragment CC