public void AddEdge(int edgeId, int vertexVal1, int vertexVal2, int weight)
            {
                Vertex vertex1 = Verticies.FirstOrDefault(item => item.Id == vertexVal1);
                Edge   edge    = new Edge(edgeId);

                if (vertex1 != null)
                {
                    vertex1 = Verticies[vertexVal1];
                }
                else
                {
                    vertex1 = new Vertex(vertexVal1);
                    Verticies.Add(vertex1);
                }

                Vertex vertex2 = Verticies.FirstOrDefault(item => item.Id == vertexVal2);

                if (vertex2 != null)
                {
                    vertex2 = Verticies[vertexVal2];
                }
                else
                {
                    vertex2 = new Vertex(vertexVal2);
                    Verticies.Add(vertex2);
                }

                edge.StartVertex = vertexVal1;
                edge.EndVertex   = vertexVal2;
                edge.Weight      = weight;
                Edges.Add(edge);

                vertex1.ForwardEdges.Add(edge.Id);
                vertex2.BackwardEdges.Add(edge.Id);

                Console.WriteLine(edgeId + ". " + vertexVal1 + " - " + vertexVal2 + " - " + weight);
            }