36 lines
1.0 KiB
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
|