)) and Pattern.Kind [P ^. Kind] then {не повторюється рейс і сответствует тип перевезення}
begin
I: = 1; {Пошук серед міст прямування початковий пункт}
While (I
Pattern.BCity) do inc (I);
If CityInPath (P ^. path, I) ^. City = Pattern.BCity then begin {Якщо початковий знайдений}
NPattern: = Pattern; {Підготовка нового шаблону і нової пересадки}
if Npattern.reboading> 1 then dec (Npattern.reboading);
Npath ^. flight: = P;
For K: = 1 to Mclass do Npath ^. Cost [k]: = 0;
Npath ^. bcity: = pattern.bcity;
Npath ^. Ddelay: = DepartureDelay (P, I, Pattern.delay);
Npath ^. waytime: = 0;
J: = I;
Repeat {перегляд наступних міст}
Inc (J);
{Внесення виправлень в шаблон і елемент маршруту про ціну і часу}
For K: = 1 to MClass do If Pattern.Class [K] and P ^. Class [K] then
Npath ^. Cost [k]: = Npath ^. Cost [k] + CityInPath (P ^. Path, J) ^. Cost [K];
Npath ^. Waytime: = Npath ^. Waytime + CityInPath (P ^. Path, J) ^. Delay;
Npath ^. target: = CityInPath (P ^. path, J) ^. City;
NPattern.Bcity: = CityInPath (P ^. Path, J) ^. City;
Npattern.WayTime: = Pattern.WayTime-Npath ^. Ddelay-Npath ^. Waytime;
Npattern.Delay: = (pattern.Delay + Npath ^. Ddelay + Npath ^. WayTime) mod 10080;
B1: = Posible (Path, CityInPath (P ^. path, J) ^. City) and (NPattern.WayTime> = 0);
{Перевірка: не перевищено ліміти часу і вартості і немає повтору шляху}
B2: = CityInPath (P ^. Path, J) ^. City = Pattern.ECity; {приїхали?} p> {Якщо не приїхали і лімітів не перевищені то робимо рассмотроім маршрути від поточного до кінцевого міст}
if B1 and (not B2) and (Pattern.reboading> 1) then Search (FlightList, Npattern, Npath);
Npath ^. Waytime: = Npath ^. Waytime + CityInPath (P ^. Path, J) ^. Reboard;
Until (not B1) or B2 or (J> = P ^. TotalStation); {Виходимо, якщо є порушення або рейс закінчився або прехал}
If B2 and B1 then Answer (Npath, pattern.cost); {Якщо приїхали, додати маршрут до списку}
end {знайдений початковий місто}
end; {маршрут підходить за типом}
P: = P ^. next; {перехід до следущему циклу}
end;
Dispose (NPath)
end;
{Завантаження вихідних даних з файлу}
Function Load (A: PFlight; FName: String; var City: cities): PFlight;
Var
Source: Text; P: Pflight; I: WayClass; J, MC: CityCode; K: byte;
C: char; Q: Pway; G, L: DayTable; D: string [8];
Begin
Assign (Source, FName);
Reset (Source);
readln (Source, MC); {Кількість міст}
{Зчитування назва міст і координат на мапі}
For J: = 1 to MC do begin ReadLn (source, City [j]. Name); readln (source, city [j]. X, city [j]. Y) end;
While Not EOF (Source) ...