public static CitiesMapParseResult Parse(string fileUri) { using (var streamReader = new StreamReader(fileUri)) { string citiesInfo = streamReader.ReadLine(); string[] citiesInfoParts = citiesInfo.Trim().Split(" "); (long citiesCount, long roadsCount) = (long.Parse(citiesInfoParts[0]), long.Parse(citiesInfoParts[1])); (long startCity, long endCity) = (long.Parse(citiesInfoParts[2]) - 1, long.Parse(citiesInfoParts[3]) - 1); var distanceMap = new DistanceMapContainer(citiesCount); for (int i = 0; i < roadsCount; i++) { string[] cityDistanceParts = streamReader.ReadLine().Trim().Split(" "); (long from, long to) = (long.Parse(cityDistanceParts[0]) - 1, long.Parse(cityDistanceParts[1]) - 1); long distance = long.Parse(cityDistanceParts[2]); distanceMap.Add(from, to, distance); distanceMap.Add(to, from, distance); } return(new CitiesMapParseResult( new CitiesMap(distanceMap), startCity, endCity)); } }
public CitiesMinDistanceCalculator(DistanceMapContainer distanceMap, long fromCity, long toCity) { _distanceMap = distanceMap; _fromCity = fromCity; _toCity = toCity; _heap = new BinaryHeap <CityDistance>(); _distancePathByCityNumber = new Dictionary <long, DistancePath>(); _minDistanceCities = new HashSet <long>(); }
public CitiesMap(DistanceMapContainer distanceMap) { _distanceMap = distanceMap; }