/// <summary>
        /// Parses the input lines of string and fills the <see cref="Graph"/> instance
        /// </summary>
        /// <param name="graph"> <see cref="Graph"/> instance. </param>
        /// <param name="lines"> Lines of strings to parse. </param>
        /// <param name="directedGraph"> Defines if parsed edges should be threated as directed. </param>
        public static void Parse(this DirectedGraph <string> graph, string[] lines, bool directedGraph = false)
        {
            foreach (string line in lines)
            {
                var labels     = line.Split(' ');
                var startLabel = labels[0];
                var endLabel   = labels[1];
                var weight     = labels.Length > 2 ? int.Parse(labels[2]) : 1;

                if (!graph.ContainsVertex(startLabel))
                {
                    graph.SetVertex(new Vertex <string>(startLabel));
                }

                if (!graph.ContainsVertex(endLabel))
                {
                    graph.SetVertex(new Vertex <string>(endLabel));
                }

                var startVertex = graph[startLabel];
                var endVertex   = graph[endLabel];

                graph.SetEdge(startVertex, endVertex, weight);

                if (!directedGraph)
                {
                    graph.SetEdge(endVertex, startVertex, weight);
                }
            }
        }