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 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 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; } } } }
public void Digraph_API_Test() { Digraph G = new Digraph(3); G.AddEdge(0, 1); G.AddEdge(0, 2); List<int> e = new List<int>(G.Adj(0)); Assert.AreEqual(1, e[0]); }