Использование обхода в глубину для проверки связности

Материал из Викиконспекты
Версия от 05:39, 9 ноября 2010; Kasetkin (обсуждение | вклад) (Новая страница: «Небольшая модификация алгоритма обхода в глубину позволяет проверить связность неориент…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Небольшая модификация алгоритма обхода в глубину позволяет проверить связность неориентированного графа. Один из вариантов алгоритма заключается в том, чтобы считать сколько вершин мы посетили во время обхода.

 string color[];         //изначально массив color заполнен значениями white.
 int count = n;          //счётчик количества вершин; изначально равен количеству вершин в графе
 bool if_connected()    
   dfs(0);               //запуск от  какой-то вершины
   if(count == 0)
     return true;
   else
     return false;
 
 int dfs(int u)         //процедура обхода в глубину. запуск от номера вершины
     for(v: uv - ребро)
     if(color[v] == white)
       dfs(v);
   color[u] = black;
   count--;