47
правок
Изменения
Код на плюсах превращен в псевдокод
=== Реализация ===
'''if''' (u == t)
'''return''' ''true'';
visited[u] = ''true''; //помечаем вершину как пройденную
'''for''' (v таких, что (u, v) — ребро в G) //проходим по смежным с u вершинам '''if''' ('''not''' visited[v]) //проверяем, не находились ли мы ранее в выбранной вершине
'''if''' (dfs(v))
'''return''' ''true'';
'''return''' ''false'';
== Алгоритм проверки связности графа G ==
=== Алгоритм ===
Заведём счётчик количества вершин которые мы ещё не посетили. В стандартной процедуре dfs() будем уменьшать счётчик на единицу при входе в процедуру. Запустимся Запустим алгоритм от какой-то вершины нашего графа. Если в конце работы процедуры dfs() счётчик равен нулю, то мы побывали во всех вершинах графа, а следовательно он связен. Если счётчик отличен от нуля, то мы не побывали в какой-то вершине графа. Работает алгоритм за <tex>O(M + N)</tex>.
=== Реализация ===
k--;
visited[u] = ''true''; //помечаем вершину как пройденную
'''for''' (v таких, что (u, v) — ребро в G) //проходим по смежным с u вершинам '''if''' ('''not''' visited[v]) //проверяем, не находились ли мы ранее в выбранной вершине
dfs(v);
[[Категория: Алгоритмы и структуры данных]]
[[Категория: Обход в глубину]]