Exemplo n.º 1
0
        public static List <EveSystem> GetShortestPath(int startingSystemId, int endingSystemId)
        {
            var path        = new Dictionary <EveSystem, EveSystem>();
            var visitedHash = new HashSet <int>();

            Queue <EveSystem> queue = new Queue <EveSystem>();

            queue.Enqueue(SystemIdToSolarSystem[startingSystemId]);
            visitedHash.Add(startingSystemId);
            while (queue.Count > 0)
            {
                EveSystem currentSystem = queue.Dequeue();
                foreach (var systemId in currentSystem.Connections)
                {
                    if (visitedHash.Contains(systemId))
                    {
                        continue;
                    }
                    visitedHash.Add(systemId);

                    var currentChild = SystemIdToSolarSystem[systemId];
                    path[currentChild] = currentSystem;

                    if (currentSystem.SolarSystemId == endingSystemId)
                    {
                        break;
                    }

                    queue.Enqueue(currentChild);
                }
            }
            var shortestPath = new List <EveSystem>();
            var current      = SystemIdToSolarSystem[endingSystemId];

            while (current != SystemIdToSolarSystem[startingSystemId])
            {
                shortestPath.Add(current);
                current = path[current];
            }
            shortestPath.Add(SystemIdToSolarSystem[startingSystemId]);
            shortestPath.Reverse();
            return(shortestPath);
        }
Exemplo n.º 2
0
        public void Save(string d, dynamic dy)
        {
            dynamic data = dy;

            for (int i = 0; i < data.eveSystems.Count; i++)
            {
                var ds = new EveSystem();
                ds.name = data.eveSystems[i].name;
                ds.id   = data.eveSystems[i].id;
                ds.adms = new List <Adm>();
                var adml = new List <Adm>();
                for (int ii = 0; ii < data.eveSystems[i].adms.Count; ii++)
                {
                    var adm = new Adm();
                    adm.name = data.eveSystems[i].adms[ii].name;
                    adm.id   = data.eveSystems[i].adms[ii].id;
                    adml.Add(adm);
                }
                eveSystems.Add(ds);
            }
        }