p>
If {Приїхали} and {Часом не перевищено} and {мінімальна ціна рейсу не вище
допустимої} then {Додати побудований маршрут в мно-во відповідей на потрібне місце}
end;
end;
{Перейти до наступного рейсу}
end;
end
Текст програми мовою Pascal
uses Crt, Date, Graph;
Const MaxCity = 100; MClass = 6;
Type
CityCode = 1 .. maxcity; {Внутрений код міста}
Week = 0 .. 10079; {Тип час в мінутак з 0:00 понеділка}
DayTable = ^ IDayTable; {Таблиця відправлень від початковій станції}
IDayTable = record
Time: Week;
Next: DayTable;
end;
WayKind = 1 .. 4; {Тип шляху (аеро, море, ж.д, авто)}
WayClass = 1 .. MClass; {Клас або тип перевезення}
Cities = array [CityCode] of {Назви і координати міст}
record
name: string [20];
x, y: word;
end;
mcost = array [wayclass] of longint; {Таблиця вартості за класами}
Way = record
City: Citycode;
Delay, Reboard: Word;
Cost: mcost;
end;
WayP = ^ way;
PWay = ^ Way1; {Інформація про міста прямування рейсу}
Way1 = record
Way: array [1 .. 4] of way;
next: PWay;
end;
wclass = array [WayClass] of boolean;
PFlight = ^ Flight;
Flight = record {Інформація щодо рейсу}
company: string [20];
number: string [10];
totalstation: CityCode;
table: DayTable;
path: PWay;
kind: WayKind;
class: WClass;
next: PFlight;
end;
Blank = record {Шаблон для пошуку шляху}
delay: Week;
BCity, ECity: CityCode;
Kind: array [WayKind] of boolean;
ReBoading: CityCode;
WayTime: Integer;
Cost: Longint;
Class: WClass;
end;
Link = ^ CityList; {Ланцюжок рейсів для проїзду від початку до кінця}
CityList = record {Інформація про проїзд між двома пунктами одним рейсом}
DDelay: Word;
waytime: word;
cost: mcost;
Bcity, Target: CityCode;
Flight: PFlight;
Last: Link;
end;
AnswerList = ^ IAnswer; {Список всіх можливих маршрутів прямування}
IAnswer = record
path: link;
reboard: citycode;
mincost, maxcost: longint;
waytime: word;
next: AnswerList;
end;
var Lanswer: AnswerList; {глобальна змінна - початок списку маршрутів}
{Додавання нового знайденого маршруту}
Procedure Answer (A: Link; cost: longint);
var P, Q: Link; d, s1, s2: word; W, PAnswer: answerlist; r: citycode;
function min (a: mcost): longint; {Мінімальна вартість по класах}
var i: integer; m: longint;
begin
m: = 1000000000;
for i: = 1 to Mclass do if (m> a [i]) and (a [i]> 0) then m: =...