private Graph InitializeGraphComponents(List <string> verticesData, List <string> edgesData) { var sizeLine = verticesData.Find(line => !line.Contains(Pickup) && !line.Contains(Shelter)); verticesData.Remove(sizeLine); var size = int.Parse(sizeLine.Split(Whitespace)[1]); var vertices = new IVertex[size]; for (var i = 0; i < vertices.Length; i++) { var vertexLine = verticesData.FirstOrDefault(line => int.Parse(line.Split(Whitespace)[1]) == i); if (vertexLine != null) { var parts = vertexLine.Split(Whitespace); switch (parts[2].ToUpper()) { case Pickup: vertices[i] = new EvacuationVertex(i, int.Parse(parts[3])); break; case Shelter: vertices[i] = new ShelterVertex(i); break; default: throw new ParseException($"Unable to parse line: {vertexLine}"); } } else { vertices[i] = new Vertex(i); } } var graph = new Graph(vertices.ToList()); AssignEdges(graph, edgesData); return(graph); }
public ShelterVertex(ShelterVertex sv) : base(sv) { }