コード例 #1
0
        private bool[] onStack;         // vertex on recursive call stack

        public DirectedCycle(Digraph G)
        {
            onStack = new bool[G.v()];
            edgeTo  = new int[G.v()];
            mark    = new bool[G.v()];
            for (int v = 0; v < G.v(); v++)
            {
                if (!mark[v])
                {
                    dfs(G, v);
                }
            }
        }
コード例 #2
0
 public DepthFirstOrder(Digraph G)
 {
     pre         = new Queue <object>();
     post        = new Queue <object>();
     reversePost = new Stack <object>();
     mark        = new bool[G.v()];
     for (int v = 0; v < G.v(); v++)
     {
         if (!mark[v])
         {
             dfs(G, v);
         }
     }
 }
コード例 #3
0
 public DirectedDFS(Digraph G, IEnumerable <int> sources)
 {
     mark = new bool[G.v()];
     foreach (int s in sources)
     {
         if (!mark[s])
         {
             dfs(G, s);
         }
     }
 }
コード例 #4
0
 public DirectedDFS(Digraph G, int s)
 {
     mark = new bool[G.v()];
     dfs(G, s);
 }