public void CalcShortestDistSum() { ICityStorage queue = new CityStorage(); ICityStorage resultStorage = new CityStorage(); queue.Add(this); _distSums.SetData(_id, 0); while (!queue.isEmpty()) { int index = 0; ICity currentCity = GetMinFromTabAndStor(_distSums, queue, ref index); int CurrentCityDist = _distSums.GetInfo(currentCity.Id); for (int i = 0; i < currentCity.GetCntOfNeighbors(); i++) { ICity currentNeighbor = currentCity.GetNeighbor(i); int tmpDist = currentCity.GetWeightToNeighbor(currentNeighbor.Id) + CurrentCityDist; if (tmpDist < _distSums.GetInfo(currentNeighbor.Id)) { _distSums.SetData(currentNeighbor.Id, tmpDist); queue.Add(currentNeighbor);//new } if (!CheckIsItHere(resultStorage, currentNeighbor) && !CheckIsItHere(queue, currentNeighbor)) { queue.Add(currentNeighbor); } } resultStorage.Add(currentCity); queue.Delete(index); } }