Использование обхода в глубину для проверки связности
Версия от 05:46, 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--;