рівні нескінченності  
 x [u]=0;// І немає найкоротшого шляху ні для однієї вершини 
 } 
  int v; 
   h [s]. v=0;// S - початок шляху, тому цій вершині нічого не передує 
  t [s]=0;// Найкоротший шлях з s в s дорівнює 0 
  x [s]=1;// Для вершини s знайдений найкоротший шлях 
  v=s;// Робимо s поточної вершиною 
  while (1) 
  {
  / / Перебираємо всі вершини, суміжні v, і шукаємо для них найкоротший шлях 
  for (u=0; u 
 {(a [v] [u] == 0) continue;// Вершини u і v несуміжні (x [u] == 0 && t [u]> t [v] + a [v] [u]) / / Якщо для вершини u ще 
  / / знайдений найкоротший шлях 
  / / і новий шлях в u коротше ніж 
  / / старий, то 
  {
  t [u]=t [v] + a [v] [u];// Запам'ятовуємо більш коротку довжину шляху в 
  / / масив t і 
  h [u]. v=v;// Запам'ятовуємо, що v-> u частина найкоротшого 
  / / шляху з s-> u 
 } 
 } 
   / / Шукаємо з усіх довжин некратчайшіх шляхів найкоротший 
  int w=infinity;// Для пошуку найкоротшого шляху 
  v=- 1;// Наприкінці пошуку v - вершина, в яку буде 
  / / знайдений новий найкоротший шлях. Вона стане 
  / / поточної вершиною 
				
				
				
				
			  for (u=0; u 
 {
  if (x [u] == 0 && t [u] 
 / / шлях і якщо довжина шляху в вершину u менше 
  / / вже знайденої, то 
  {
  v=u;// Поточної вершиною стає u-я вершина 
  w=t [u]; 
 } 
 } (v == - 1) 
  {+=infinity; 
  / / Memo1-> Lines-> Add («Ні шляху з вершини»); 
  break; 
 } 
  if (v == g && t [g] <100) / / Найден найкоротший шлях, 
  {/ / виводимо його 
   sumB +=t [g]; 
   break; 
 } [v]=1; 
 } 
 } 
 } (sumDl> sumB) {= versh;=sumB; 
 } 
 } (punkt!=- 1) {-> Lines-> Add («Це пункт« + IntToStr (punkt)); 1 -> Lines-> Add (»- Виводимо маршрути - »); 
  / / тепер вираховуючи маршрути до кожного пункту і виводимо їх 
  for (int versh=0; versh 
 s=punkt;// Номер вихідної вершини 
  int g=versh;// Номер кінцевої вершини 
  int * x;// Масив, що містить одиниці і нулі для кожної вершини, 
  / / x [i]=0 - ще не знайдено найкоротший шлях в i-ю вершину, 
  / / x [i]=1 - найкоротший шлях в i-ю вершину вже...