public void Normal_directed_connected_graph() { var result = new TopographicalSorting().FindOrdering(new[] { // // 0 --> 1 ---> 5 --> 6 // --> 2 ---> 3 --^ ^ // ---> 4 --- ^ // new[] { 1, 2 }, // node 0 new[] { 2 }, // node 1 new[] { 3, 4 }, // node 2 new[] { 5 }, // node 3 new[] { 5 }, // node 4 new[] { 6 }, // node 5 new int[] { } // node 6 }); result[0].Should().Be(1); result[1].Should().Be(2); result[2].Should().Be(3); result[3].Should().Be(5); result[4].Should().Be(4); result[5].Should().Be(6); result[6].Should().Be(7); result.Should().HaveCount(7); }
public void What_happens_when_loop() { var result = new TopographicalSorting().FindOrdering(new[] { // // 0 --> 1 ---> 5 --> 6 // ^ --> 2 --> 4 --- ^ // ^ --> 3- -- // ---------- loop 3 to 0 // new[] { 1, 2 }, // node 0 new[] { 2 }, // node 1 new[] { 3, 4 }, // node 2 new[] { 2 }, // node 3 new[] { 5 }, // node 4 new[] { 6 }, // node 5 new int[] { } // node 6 }); result[0].Should().Be(1); result[1].Should().Be(2); result[2].Should().Be(3); result[3].Should().Be(5); result[4].Should().Be(4); result[5].Should().Be(6); result[6].Should().Be(7); result.Should().HaveCount(7); }