1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class DepthFirstSearch { private boolean[] marked; private int count;
public DepthFirstSearch(Graph G, int s) { marked = new boolean[G.V]; dfs(G, s); }
private void dfs(Graph G, int v) { marked[v] = true; count += 1; 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; } }
|