Esempio n. 1
0
        public void TestCase_0()
        {
            var edges = new List <DirectedEdge <int> >();

            var graph = new DirectedGraph <int>(edges);

            Assert.True(GraphProperties <int> .IsDirectedAcyclic(graph));
        }
Esempio n. 2
0
        public void TestCase_1()
        {
            var edges = new List <DirectedEdge <int> >()
            {
                new DirectedEdge <int>(new GraphNode <int>(1), new GraphNode <int>(2))
            };

            var graph = new DirectedGraph <int>(edges);

            Assert.True(GraphProperties <int> .IsDirectedAcyclic(graph));
        }
Esempio n. 3
0
        public void TestCase_2()
        {
            var node1 = new GraphNode <int>(1);
            var node2 = new GraphNode <int>(2);

            var edges = new List <DirectedEdge <int> >()
            {
                new DirectedEdge <int>(node1, node2),
                new DirectedEdge <int>(node2, node1)
            };

            var graph = new DirectedGraph <int>(edges);

            Assert.False(GraphProperties <int> .IsDirectedAcyclic(graph));
        }
Esempio n. 4
0
        //https://leetcode.com/problems/course-schedule/
        public bool CanFinish(int numCourses, int[][] prerequisites)
        {
            var nodes = new List <GraphNode <int> >(numCourses);

            for (var i = 0; i < numCourses; i++)
            {
                nodes.Add(new GraphNode <int>(i));
            }

            var edges = new List <DirectedEdge <int> >(prerequisites.GetLength(0));

            for (var i = 0; i < prerequisites.GetLength(0); i++)
            {
                edges.Add(new DirectedEdge <int>(nodes[prerequisites[i][0]], nodes[prerequisites[i][1]]));
            }

            var diGraph = new DirectedGraph <int>(edges);

            return(GraphProperties <int> .IsDirectedAcyclic(diGraph));
        }