Изменения

Перейти к: навигация, поиск

Обход в глубину, цвета вершин

129 байт убрано, 21:47, 25 сентября 2011
Нет описания правки
=== Реализация ===
Отличие реализации с цветами от предыдущей лишь в массиве visited, который мы назовем теперь color, и дополнительной ''черной'' "метки". При этом цвета вершин будут заданы следующим образом: ''белый'' - 0, ''серый'' - 1, ''черный'' - 2. Все отличия помечены '''жирным''' шрифтом.
vector<'''int'''> '''color'''; //вектор для хранения информации '''о цвете''' вершин
void dfs(int u)
{
'''color[u] = 1; //раскрашиваем вершину в ''серый'' цвет'''
for (v таких, что (u, v) - ребро в G) //проходим по смежным с u вершинам
if (!color[v]) //проверяем, не находились ли мы ранее в выбранной вершине, '''условие не требует изменений,''' dfs(v); '''//поскольку мы считаем вершину "не пройденной" только тогда, когда она ''белого'' цвета, т.е. когда color[v] = 0''' '''color[u] = 2; //раскрашиваем вершину в ''черный'' цвет'''
}
{
... //задание графа G с количеством вершин n.
'''color.assign(n, 0);''' //в начале все вершины в графе ''не пройденные'', '''т.е. ''белые''.'''
for (int i = 0; i < n; ++i) //проходим по всем вершинам графа...
if (!color[i]) //...не забыв проверить, были мы уже в очередной вершине или нет
Анонимный участник

Навигация