Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 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;
         }
     }
 }
Exemplo n.º 4
0
        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;
                    }
                }
            }
        }
Exemplo n.º 5
0
 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]);
 }