21 lines
839 B
Java
21 lines
839 B
Java
package net.datastructures;
|
|
import java.util.Iterator;
|
|
|
|
//begin#fragment CC
|
|
/** 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) { v.put(COMPONENT, compNumber);}
|
|
protected Integer finalResult(Integer dfsResult) {
|
|
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;
|
|
}
|
|
}
|
|
//end#fragment CC
|