public void Test_NoCycle()
        {
            EdgeWeightedDigraph graph = new EdgeWeightedDigraph(3);

            graph.AddEdge(new Edge(0, 1, .3));
            graph.AddEdge(new Edge(0, 2, .5));

            EdgeWeightedCycleChecker checker = EdgeWeightedCycleChecker.Create(graph);

            Assert.False(checker.HasCycle);
        }
        public TopologicalChecker(EdgeWeightedDigraph graph)
        {
            EdgeWeightedCycleChecker checker = EdgeWeightedCycleChecker.Create(graph);

            if (!checker.HasCycle)
            {
                DepthFirstOrder dfs = new DepthFirstOrder(graph);

                this.Order = dfs.ReversePost();
            }
        }
        public void Test_GetCycle()
        {
            EdgeWeightedDigraph graph = new EdgeWeightedDigraph(3);

            Edge e0 = new Edge(0, 1, .3);
            Edge e1 = new Edge(1, 2, .8);
            Edge e2 = new Edge(2, 0, .5);

            graph.AddEdge(e0);
            graph.AddEdge(e1);
            graph.AddEdge(e2);

            EdgeWeightedCycleChecker checker = EdgeWeightedCycleChecker.Create(graph);

            AssertUtilities.Sequence(new Edge[] { e0, e1, e2 }, checker.GetCycle());
        }