Циклы в графе. Двудольность
Перейти к навигации
Перейти к поиску
vector<int> g[V_CNT];
int u[V_CNT];
void dfs(int v) {
u[v] = 1;
for (int i = 0; i < g[v].size(); i++) {
if (u[g[v][i]] == 1)
/* граф содержит цикл */;
if (!u[g[v][i]])
dfs(g[v][i]);
}
u[v] = 2;
}
for (int i = 0; i < V_CNT; i++)
u[i] = 0;
for (int i = 0; i < V_CNT; i++)
if (!u[i])
dfs(i);
Ссылки на задачи
Ссылки
- e-maxx.ru — Проверка графа на ацикличность и нахождение цикла
- neerc.ifmo.ru/wiki — Использование обхода в глубину для поиска цикла в ориентированном графе
- brestprog.neocities.org — Проверка графа на наличие циклов (рассматриваются циклы в неориентированных графах)
- brestprog.neocities.org — Двудольные графы. Проверка графа на двудольность
- algorithmica.org — Графы. Поиск в глубину
- algorithmica.org — Продвинутый DFS
- informatics.mccme.ru — Курс «Алгоритмы на графах» — часть 2
- Калинин П. Поиск в глубину
- Лахно А. Поиск в глубину и его применение
- VisuAlgo — Graph Traversal