Files
unisa_strutture_dati_2013_2014/graph/ComponentsDFS.java

36 lines
1.0 KiB
Java

package graph;
//begin#fragment CC
import exceptions.InvalidKeyException;
/** This class extends DFS to compute the connected components of a graph. */
public class ComponentsDFS<V, E> extends DFS<V, E, Object, Integer> {
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) {
try{
v.put(COMPONENT, compNumber);
}
catch (InvalidKeyException e){
//
}
}
protected Integer finalResult(Integer dfsResult) {
try{
for (Vertex<V> 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