Циклы в графе. Двудольность: различия между версиями
Перейти к навигации
Перейти к поиску
Ctrlalt (обсуждение | вклад) (→Ссылки) |
Ctrlalt (обсуждение | вклад) (→Ссылки) |
||
Строка 26: | Строка 26: | ||
* [http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0_%D0%B2_%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%BC_%D0%B3%D1%80%D0%B0%D1%84%D0%B5 neerc.ifmo.ru/wiki — Использование обхода в глубину для поиска цикла в ориентированном графе] | * [http://neerc.ifmo.ru/wiki/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B0_%D0%B2_%D0%B3%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D1%83_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%86%D0%B8%D0%BA%D0%BB%D0%B0_%D0%B2_%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%BC_%D0%B3%D1%80%D0%B0%D1%84%D0%B5 neerc.ifmo.ru/wiki — Использование обхода в глубину для поиска цикла в ориентированном графе] | ||
* [http://brestprog.by/topics/graphcycles/ brestprog — Проверка графа на наличие циклов] (рассматриваются циклы в неориентированных графах) | * [http://brestprog.by/topics/graphcycles/ brestprog — Проверка графа на наличие циклов] (рассматриваются циклы в неориентированных графах) | ||
* [ | * [http://brestprog.by/topics/bipartite/ brestprog — Двудольные графы. Проверка графа на двудольность] | ||
* [http://algorithmica.org/tg/dfs algorithmica.org — Графы. Поиск в глубину] | * [http://algorithmica.org/tg/dfs algorithmica.org — Графы. Поиск в глубину] | ||
* [http://algorithmica.org/tg/dfs-plus algorithmica.org — Продвинутый DFS] | * [http://algorithmica.org/tg/dfs-plus algorithmica.org — Продвинутый DFS] |
Версия от 15:30, 15 февраля 2020
vector<vector<int>> g(n); vector<int> visited(n); // 0 - ещё не были в вершине, 1 - вошли, но ещё не вышли из неё, 2 - уже обработали её void dfs(int v) { visited[v] = 1; for (int to : g[v]) { if (!visited[to]) dfs(to); else if (visited[to] == 1) /* граф содержит цикл */; } visited[v] = 2; } for (int i = 0; i < n; i++) if (!visited[i]) dfs(i);
Ссылки на задачи
Ссылки
- e-maxx.ru — Проверка графа на ацикличность и нахождение цикла
- neerc.ifmo.ru/wiki — Использование обхода в глубину для поиска цикла в ориентированном графе
- brestprog — Проверка графа на наличие циклов (рассматриваются циклы в неориентированных графах)
- brestprog — Двудольные графы. Проверка графа на двудольность
- algorithmica.org — Графы. Поиск в глубину
- algorithmica.org — Продвинутый DFS
- informatics.mccme.ru — Курс «Алгоритмы на графах» — часть 2
- Калинин П. Поиск в глубину
- Лахно А. Поиск в глубину и его применение
- VisuAlgo — Graph Traversal