Exemple #1
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;
         }
     }
 }
Exemple #2
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);
         }
     }
 }
Exemple #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);
         }
     }
     reversePost.Push(v);
 }
Exemple #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;
                    }
                }
            }
        }