private List<City> GetCitiesOnRoute(City source, City target, Dictionary<City, City> previous)
{
var citiesOnRoute = new List<City>();
City cr = target;
while (previous[cr] != null)
{
citiesOnRoute.Add(cr);
cr = previous[cr];
}
citiesOnRoute.Add(source);
citiesOnRoute.Reverse();
return citiesOnRoute;
}