![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
xel |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
вообщем.. есть алгоритм с куском реализации.. я 42 часа искал этот алгоритм(двое суток без сна..) ..
ПЛИЗ... ПОМАГИТЕ ИЗ АЛГОРИТМА СЛЕПИТЬ ПРОГУ... на вас последняя надежда..плиззз... вот все данные: Подсчет количества компонент связности Задача. Определить количество компонент связности в заданном графе. Рекурсивный алгоритм Считаем, что граф задан матрицей смежности sm. Каждый элемент специального линейного массива mark будет хранить номер компоненты связности, к которой принадлежит соответствующая вершина графа. Алгоритм КомпСвяз-Рек 1. Совершить обход в глубину всех компонент связности графа, помечая вершины каждой из них отдельным номером. Рекурсивная процедура обхода в глубину (прямого или обратного обхода) переберет все вершины, достижимые из начальной. Начальной вершиной для очередной компоненты связности может стать любая вершина, еще не отнесенная ни к какой другой компоненте связности (то есть еще не помеченная в массиве mark). По окончании работы программы переменная kol будет содержать количество найденных компонент связности. Реализация procedure step (v: integer); var j: integer; begin mark[v]:= k; for j:=1 to N do if (mark[j]=0)and(sm[v,j]<>0) then step(j); end; begin ... for i:= 1 to N do mark[i]:=0; k:= 0; {номер текущей компоненты связности} for i:= 1 to N do if mark[i]=0 then begin inc(k); step(i); end; ... end. |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 14:17 |