Реализация алгоритма Дейкстры - VB

Узнай цену своей работы

Формулировка задачи:

Реализация алгоритма Дейкстры.

Решение задачи: «Реализация алгоритма Дейкстры»

textual
Листинг программы
const n = 10; //количество вершин в графе
var
  a:array[1..n,1..n] of longint;//матрица смежности
  b:array[1..n]of boolean;//список просмотренных вершин
  d:array[1..n] of longint;//кротчайшие расстояния
  q, i, j, m, v: integer;
begin
  //Ввод данных
  q := StrToIntDef(Edit1.Text, 1); //начальная вершина
  if (q < 1) or (q > n) then q := 1;
  for i := 1 to n do
  for j := 1 to n do
  a[j, i] := StrToIntDef(StringGrid1.Cells[i - 1, j - 1], -1);
  //Расчет
  fillchar(b,sizeof(b),0);
  fillchar(d,sizeof(d), 10000);
  d[q] := 0;//расстояние до начальной вершины
  for i:=1 to n do
  begin
    m := 1000;
    for j := 1 to n do
    if ( (d[j] <= m) and (not b[j]) ) then
    begin
      m:=d[j];
      v:=j;
    end;
    b[v] := true;
    for j := 1 to n do
     if ((a[v,j] <> -1) and (not b[j]) and (d[v]+a[v,j]
       d[j] := d[v] + a[v,j];
  end;
  //Вывод результата
  ListBox1.Clear;
  for i := 1 to n do
    ListBox1.Items.Append(IntToStr(q)
      + ' -> ' + IntToStr(i) + ': '
      + IntToStr(d[i]));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы