public void CanFindSizesGraph4()
        {
            var input =
                new[]
            {
                "1 2",
                "2 3",
                "2 4",
                "2 5",
                "3 6",
                "4 5",
                "4 7",
                "5 2",
                "5 6",
                "5 7",
                "6 3",
                "6 8",
                "7 8",
                "7 10",
                "8 7",
                "9 7",
                "10 9",
                "10 11",
                "11 12",
                "12 10",
            };

            var sizes = new KosarajuStronglyConnectedComponents()
                        .CalcStronglyConnectedComponentSizes(PrepareInput(input));

            AssertHelper.Seq(new[] { 6, 3, 2, 1 }, sizes);
        }
        public void CanFindSizesGraph5()
        {
            var input =
                new[]
            {
                "1 4",
                "4 3",
                "3 1",
                "4 6",
                "6 7",
                "6 10",
                "10 11",
                "11 10",
                "7 6",
                "2 5",
                "5 2",
                "5 7",
                "5 8",
                "8 9",
                "7 11",
            };

            var sizes = new KosarajuStronglyConnectedComponents()
                        .CalcStronglyConnectedComponentSizes(PrepareInput(input));

            AssertHelper.Seq(new[] { 3, 2, 2, 2, 1, 1 }, sizes);
        }
        public void CanFindSizesGraph2()
        {
            var input =
                new[]
            {
                "1 2",
                "2 6",
                "2 3",
                "2 4",
                "3 1",
                "3 4",
                "4 5",
                "5 4",
                "6 5",
                "6 7",
                "7 6",
                "7 8",
                "8 5",
                "8 7",
            };

            var sizes = new KosarajuStronglyConnectedComponents()
                        .CalcStronglyConnectedComponentSizes(PrepareInput(input));

            AssertHelper.Seq(new[] { 3, 3, 2 }, sizes);
        }
        public void CanFindSizesGraph9()
        {
            var input =
                new[]
            {
                "1 2",
                "1 3",
                "3 2",
            };

            var sizes = new KosarajuStronglyConnectedComponents()
                        .CalcStronglyConnectedComponentSizes(PrepareInput(input, 0));

            AssertHelper.Seq(new[] { 1, 1, 1 }, sizes);
        }
        public void CanFindSizesGraph8()
        {
            var input =
                new[]
            {
                "0 1",
                "1 2",
                "2 0",
                "3 4",
                "4 5",
                "5 4",
                "6 7",
            };

            var sizes = new KosarajuStronglyConnectedComponents()
                        .CalcStronglyConnectedComponentSizes(PrepareInput(input, 0));

            AssertHelper.Seq(new[] { 3, 2, 1, 1, 1 }, sizes);
        }
        public void CanFindSizesGraph7()
        {
            var input =
                new[]
            {
                "1 9  ",
                "1 7  ",
                "2 6  ",
                "3 6  ",
                "4 1  ",
                "4 6  ",
                "14 2 ",
                "6 3  ",
                "7 9  ",
                "9 4  ",
                "3 1  ",
            };

            var sizes = new KosarajuStronglyConnectedComponents()
                        .CalcStronglyConnectedComponentSizes(PrepareInput(input));

            AssertHelper.Seq(new[] { 6, 1, 1 }, sizes);
        }
        public void CanFindSizesGraph1()
        {
            var input =
                new[]
            {
                "1 4",
                "2 8",
                "3 6",
                "4 7",
                "5 2",
                "6 9",
                "7 1",
                "8 5",
                "8 6",
                "9 7",
                "9 3",
            };

            var sizes = new KosarajuStronglyConnectedComponents()
                        .CalcStronglyConnectedComponentSizes(PrepareInput(input));

            AssertHelper.Seq(new[] { 3, 3, 3 }, sizes);
        }
        public void CanFindSizesGraph6()
        {
            var input =
                new[]
            {
                " 0  7",
                " 0 34",
                " 1 14",
                " 1 45",
                " 1 21",
                " 1 22",
                " 1 22",
                " 1 49",
                " 2 19",
                " 2 25",
                " 2 33",
                " 3  4",
                " 3 17",
                " 3 27",
                " 3 36",
                " 3 42",
                " 4 17",
                " 4 17",
                " 4 27",
                " 5 43",
                " 6 13",
                " 6 13",
                " 6 28",
                " 6 28",
                " 7 41",
                " 7 44",
                " 8 19",
                " 8 48",
                " 9  9",
                " 9 11",
                " 9 30",
                " 9 46",
                "10  0",
                "10  7",
                "10 28",
                "10 28",
                "10 28",
                "10 29",
                "10 29",
                "10 34",
                "10 41",
                "11 21",
                "11 30",
                "12  9",
                "12 11",
                "12 21",
                "12 21",
                "12 26",
                "13 22",
                "13 23",
                "13 47",
                "14  8",
                "14 21",
                "14 48",
                "15  8",
                "15 34",
                "15 49",
                "16  9",
                "17 20",
                "17 24",
                "17 38",
                "18  6",
                "18 28",
                "18 32",
                "18 42",
                "19 15",
                "19 40",
                "20  3",
                "20 35",
                "20 38",
                "20 46",
                "22  6",
                "23 11",
                "23 21",
                "23 22",
                "24  4",
                "24  5",
                "24 38",
                "24 43",
                "25  2",
                "25 34",
                "26  9",
                "26 12",
                "26 16",
                "27  5",
                "27 24",
                "27 32",
                "27 31",
                "27 42",
                "28 22",
                "28 29",
                "28 39",
                "28 44",
                "29 22",
                "29 49",
                "30 23",
                "30 37",
                "31 18",
                "31 32",
                "32  5",
                "32  6",
                "32 13",
                "32 37",
                "32 47",
                "33  2",
                "33  8",
                "33 19",
                "34  2",
                "34 19",
                "34 40",
                "35  9",
                "35 37",
                "35 46",
                "36 20",
                "36 42",
                "37  5",
                "37  9",
                "37 35",
                "37 47",
                "37 47",
                "38 35",
                "38 37",
                "38 38",
                "39 18",
                "39 42",
                "40 15",
                "41 28",
                "41 44",
                "42 31",
                "43 37",
                "43 38",
                "44 39",
                "45  8",
                "45 14",
                "45 14",
                "45 15",
                "45 49",
                "46 16",
                "47 23",
                "47 30",
                "48 12",
                "48 21",
                "48 33",
                "48 33",
                "49 34",
                "49 22",
                "49 49",
            };

            var sizes = new KosarajuStronglyConnectedComponents()
                        .CalcStronglyConnectedComponentSizes(PrepareInput(input, 0));

            AssertHelper.Seq(new[] { 35, 7, 1, 1, 1, 1, 1, 1, 1, 1 }, sizes);
        }