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); }