Главная / Программирование на языке Pascal / Какой алгоритм реализует приведенная ниже программа?const nnn = 10000; type uk = ^ukk; ukk = record v: integer; next: uk; end; var head: array[1..nnn] of uk; a: array[1..nnn] of integer; ii,i,j,k,n: integer; q,p: uk; f: text; procedure dob(ii,jj: integer)

Какой алгоритм реализует приведенная ниже программа?const nnn = 10000; type uk = ^ukk; ukk = record v: integer; next: uk; end; var head: array[1..nnn] of uk; a: array[1..nnn] of integer; ii,i,j,k,n: integer; q,p: uk; f: text; procedure dob(ii,jj: integer); {добавление ребра} var pp,qq: uk; begin new(qq); qq^.v:=jj; qq^.next:=nil; if head[ii]=nil then head[ii]:=qq {вставка первого} else begin {вставка остальных} pp:=head[ii]; while pp^.next<>nil do pp:=pp^.next; pp^.next:=qq; end; end; begin {------- считывание графа ------------} ... readln(f,n); {кол-во вершин в графе} while not eof(f) do begin read(f,i,j); if i<>j then begin dob(j,i); dob(i,j); end; end; {--------- инициация массива ---------} for i:=1 to n do begin head[i]:=nil; a[i]:=0; end; {------- основная часть -------------} k:=0; i:=1; repeat k:=k+1; a[i]:=k; p:=head[i]; while p<>nil do begin j:=p^.v; a[j]:=k; if (head[j]<>nil) and (i<>j) then begin q:=p; while q^.next<>nil do q:=q^.next; q^.next:=head[j]; head[j]:=nil; end; p:=p^.next; end; i:=i+1; while (head[i]=nil) and (i<=n) do i:=i+1; until i=n+1; for i:=1 to n do if a[i]=0 then k:=k+1; writeln(k); {выдача результата} end.

вопрос

Правильный ответ:

подсчет количества компонент связности
нахождение минимального каркаса в связном графе
нахождение кратчайшего пути между двумя выделенными вершинами
Сложность вопроса
53
Сложность курса: Программирование на языке Pascal
75
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Спасибо за подсказками по intiut'у.
24 дек 2020
Аноним
Благодарю за тесты по intiut'у.
27 мар 2016
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.