Program Howl; Uses Math; Const MaxN=1000; MaxEdge=100000001; // "бесконечная" громкость Var N, M: LongInt; e: Array [1..MaxN, 1..MaxN] of LongInt; // e[i,j] вес (громкость} тропинки от куста i до куста j; // при отсутствии тропинки - "бесконечная" f: Text; i, j, w1, w2: LongInt; res: Array [1..MaxN] of LongInt; // res[i] - наименьшая возможная максимальная громкость, // достижимая на пути из вершины 1 до вершины i mark: Array [1..MaxN] of Boolean; // вспомогательный массив; установленная метка означает, // что для соответствующей вершины в массиве res хранится // окончательный результат, который уже не может быть улучшен Begin {Чтение данных} Assign(f, 'howl.in'); Reset(f); Readln(f, N, M); For i:= 1 To N Do Begin res[i]:= MaxEdge; mark[i]:= False; For j:= 1 To N Do Begin e[i,j]:= MaxEdge; End; End; For i:= 1 To M Do Begin Readln(f, w1, w2, j); e[w1,w2]:= j; e[w2,w1]:= j; End; Close(f); {Поиск с помощью алгоритма Дейкстры. Вообще говоря, алгоритм Дейкстры изначально предназначен для поиска кратчайших расстояний от данной вершины до всех остальных в графе с неотрицательными длинами дуг, но в данной задаче он оказывается 100%-но применим с минимальными изменениями} res[1]:= 0; While not mark[N] Do Begin {Выбираем среди вершин с пока ещё не установившимся результатом вершину с наименьшим значением res... } w2:= MaxEdge; For i:= 1 To N Do Begin If (not mark[i]) and (res[i]