Задача состоит в нахождении минимального остова графа ... Задаю матрицу смежности ( элементу матрицы a[i,j]:=w, где w - вес ребра) Мне нужно отсортировать рёбра по весу, задача вроде лёгкая, но либо я туплю, либо всё не так просто ...
For i:=1 to n do For j:=1 to n do if Pred a[i,j]< a[i,j] then .....
Хотел использовать пузырьковую сортировку ... Проблема состоит в том что я не знаю как записать предыдущий элемент... Или может как-то по-другому надо поступать?
procedure TForm1.SpeedButton3Click(Sender: TObject); var sm,sp:set of 1..maxn; min,i,j,l,t:integer; begin
min:=maxint; sm:=[1..n]; sp:=[]; for i:=1 to n-1 do for j:=i+1 to n do begin min:=a[i,j]; l:=i; t:=j; end; ar[i,j]:=a[l,t];
while sm<>[] do begin min:=maxint; l:=0; t:=0; for i:=1 to n do if not (i in sp) then for j:=1 to n do if (j in sp) and (a[i,j]<min) and (a[i,j]<>0) then begin min:=a[i,j]; l:=i; t:=j; end; sp:=sp+[l]; sm:=sm-[l]; ar[i,j]:=a[l,t]; end; end;
Вроде все так ....
Помогите пожалуйста:
var Form1: TForm1; f:file of integer; idown,n,wrt,i,j:integer; a,ar:array[1..10,1..10] of integer; m:array[1..10] of integer; vx:array[1..10] of integer; vy:array[1..10] of integer;
implementation
{$R *.dfm}
procedure TForm1.SpeedButton1Click(Sender: TObject); begin assignfile(f,extractfilepath(application.exename)+'\in.krs'); rewrite(f); for i:= 1 to n do {записуем в файл введенные данные } for j:= 1 to n do begin if sg.cells[i,j]='-' then wrt:=999 else wrt:=strtoint(sg.cells[i,j]); write(f,wrt); end; closefile(f); end;
Выдает ошибку [Warning] Unit1.pas(72): Unsafe type 'f: file of Integer'