public void Case1()
        {
            var vertices = new ExtendedVertex[]
                {
                     new ExtendedVertex(1, new AdjacentEdge[]
                        {
                            new AdjacentEdge(2,1),
                            new AdjacentEdge(3,3),
                            new AdjacentEdge(4,4),
                        }),
                    new ExtendedVertex(2, new AdjacentEdge[]
                    {
                        new AdjacentEdge(1,1),
                        new AdjacentEdge(3,2),
                    }),
                    new ExtendedVertex(3, new AdjacentEdge[]
                        {
                            new AdjacentEdge(4,5),
                            new AdjacentEdge(2,2),
                        }),
                    new ExtendedVertex(4, new AdjacentEdge[]
                    {
                        new AdjacentEdge(1,4),
                        new AdjacentEdge(3,5),
                    }),
                };

            var primAlg = new PrimMST();
            Assert.AreEqual(7, primAlg.CalcMSTLength(vertices));
        }
        public void Case2()
        {
            var vertices = new ExtendedVertex[]
                {
                    new ExtendedVertex(1, new AdjacentEdge[]
                        {
                            new AdjacentEdge(2,6),
                            new AdjacentEdge(3,3),
                            new AdjacentEdge(4,-14),
                        }),
                    new ExtendedVertex(2, new AdjacentEdge[]
                    {
                        new AdjacentEdge(1,6),
                        new AdjacentEdge(4,8),
                    }),
                    new ExtendedVertex(3, new AdjacentEdge[]
                        {
                            new AdjacentEdge(4,12),
                            new AdjacentEdge(1,3),
                        }),
                    new ExtendedVertex(4, new AdjacentEdge[]
                    {
                        new AdjacentEdge(1,-14),
                        new AdjacentEdge(3,12),
                        new AdjacentEdge(5,-5),
                    }),
                    new ExtendedVertex(5, new AdjacentEdge[]
                    {
                        new AdjacentEdge(4,-5),
                    }),
                };

            var primAlg = new PrimMST();
            Assert.AreEqual(-10, primAlg.CalcMSTLength(vertices));
        }
        private static void PrimMST(string filePath)
        {
            var lines = File.ReadAllLines(filePath);
            int verticesCount = int.Parse(lines[0].Split(' ').First());
            var vertices = Enumerable.Range(1, verticesCount).Select(x => new ExtendedVertex(x)).ToArray();

            foreach (var line in lines.Skip(1))
            {
                var node = line.Split(new[] {' ', '\t', ','}, StringSplitOptions.RemoveEmptyEntries);
                var left = int.Parse(node[0]);
                var right = int.Parse(node[1]);
                var weight = int.Parse(node[2]);
                vertices[left - 1].AddAdjacenEdge(new AdjacentEdge(right, weight));
                vertices[right - 1].AddAdjacenEdge(new AdjacentEdge(left, weight));
            }

            var primAlg = new PrimMST();

            Console.WriteLine("Prim MST lenght: {0}", primAlg.CalcMSTLength(vertices));
        }