package search; public class DepthFirstSearch { private boolean[] marked; private int count; public static void main(String[] args) { Graph g = new Graph(5); g.addEdge(4, 3); g.addEdge(2, 3); g.addEdge(1, 2); g.addEdge(0, 2); DepthFirstSearch s = new DepthFirstSearch(g, g.V()); } public DepthFirstSearch(Graph G, int s){ marked = new boolean[G.V()]; dfs(G, s); } public void dfs(Graph G, int v){ marked[v] = true; count++; for(int w : G.adj(v)) if(!marked[w]) dfs(G, w); } public boolean marked(int w){ return marked[w]; } public int count(){ return count; } }