private void DFS(Digraph G, int v) { marked[v] = true; foreach (var w in G.Adj(v)) { if (!marked[w]) { DFS(G, w); edgeTo[w] = v; } } }
private void DFS(Digraph G, int v) { marked[v] = true; id[v] = count; foreach (var w in G.Adj(v)) { if (!marked[w]) { DFS(G, w); } } }
private void DFS(Digraph G, int v) { marked[v] = true; foreach (var w in G.Adj(v)) { if (!marked[w]) { DFS(G, w); } } reversePost.Push(v); }
private void BFS(Digraph G, IEnumerable <int> sources) { Queue <int> q = new Queue <int>(); foreach (int source in sources) { q.Enqueue(source); } while (!(q.Count == 0)) { int v = q.Dequeue(); foreach (int w in G.Adj(v)) { if (!marked[w]) { q.Enqueue(w); marked[w] = true; edgeTo[w] = v; } } } }