14
правок
Изменения
→Пример реализации
==Пример реализации==
vector<vector<int>> g, h; //g хранит граф в виде списка смежностей, h - обратный
vector<int> color, ord, component; //цвет вершины, список вершин в порядке окончания обработки, номер компоненты, к который относиться вершина
int col; //номер текущей компоненты
dfs(g[v][i]);
}
ord.push_back(v); //добавляем вершину v в конец списка ord[]
}
void dfs2(int & v) //второй поиск в глубину, выявляет компоненты сильной связности в графе
{
component[v] = col; //помечаем вершину v как принадлежащую компоненте с номером col
for (unsigned i = 0; i < h[v].size(); ++i)
{
if (component[h[v][i]] == 0)
dfs2(h[v][i]);
}