Реализация алгоритма Дейкстры - 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]));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д