Пример #1
0
        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);
        }
Пример #2
0
 public ShelterVertex(ShelterVertex sv) : base(sv)
 {
 }