예제 #1
0
        private Digraph BuildGraph(bool hasCycle)
        {
            List <int> vertexes = new List <int>()
            {
                0, 1, 2, 3
            };
            Digraph g = new Digraph(vertexes);

            g.AddEdge(0, 1);
            g.AddEdge(1, 2);
            g.AddEdge(2, 3);
            if (hasCycle)
            {
                g.AddEdge(3, 0);
            }
            else
            {
                g.AddEdge(0, 3);
            }
            return(g);
        }
예제 #2
0
        public Digraph Reverse()
        {
            Digraph g = new Digraph(_vertexes);

            foreach (int v in _vertexes)
            {
                foreach (int w in Adj(v))
                {
                    g.AddEdge(w, v);
                }
            }
            return(g);
        }
예제 #3
0
        private Digraph BuildGraph()
        {
            List <int> vertexes = new List <int>()
            {
                0, 1, 2, 3, 4, 5, 6
            };
            Digraph g = new Digraph(vertexes);

            g.AddEdge(0, 5);
            g.AddEdge(0, 1);
            g.AddEdge(0, 6);
            g.AddEdge(5, 4);
            g.AddEdge(6, 4);
            g.AddEdge(2, 0);
            g.AddEdge(2, 3);
            g.AddEdge(3, 5);
            return(g);
        }