Использование обхода в глубину для проверки связности — различия между версиями
Kasetkin (обсуждение | вклад) (Новая страница: «Небольшая модификация алгоритма обхода в глубину позволяет проверить связность неориент…») |
Kasetkin (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
Небольшая модификация алгоритма обхода в глубину позволяет проверить связность неориентированного графа. | Небольшая модификация алгоритма обхода в глубину позволяет проверить связность неориентированного графа. | ||
| − | + | Идея алгоритма заключается в том, чтобы считать сколько вершин мы посетили во время обхода. | |
| − | |||
| − | |||
| − | + | 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--; | ||
Версия 05:46, 9 ноября 2010
Небольшая модификация алгоритма обхода в глубину позволяет проверить связность неориентированного графа. Идея алгоритма заключается в том, чтобы считать сколько вершин мы посетили во время обхода.
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--;