Компоненты связности: различия между версиями
Перейти к навигации
Перейти к поиску
Ctrlalt (обсуждение | вклад) Нет описания правки |
Ctrlalt (обсуждение | вклад) Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
== TLDR == | |||
<youtube width="300" height="180">rZkauRhHKGo</youtube> | |||
<youtube width="300" height="180">waXBVBKdV1s</youtube> | |||
void dfs(int v, int component) { | |||
== Код == | |||
void dfs(vector<vector<int>> &graph, int v, vector<int> &visited, int component) { | |||
visited[v] = component; | visited[v] = component; | ||
for (int to : graph[v]) | for (int to : graph[v]) | ||
if (!visited[to]) | if (!visited[to]) | ||
dfs(to, component); | dfs(graph, to, visited, component); | ||
} | } | ||
int componentCount = 0; | int componentCount = 0; | ||
for (int v = 0; v < | for (int v = 0; v < graph.size(); v++) | ||
if (!visited[v]) | if (!visited[v]) | ||
dfs( | dfs(graph, v, visited, ++componentCount); | ||
== Ссылки на задачи == | == Ссылки на задачи == |
Текущая версия от 15:14, 24 мая 2023
TLDR
Код
void dfs(vector<vector<int>> &graph, int v, vector<int> &visited, int component) { visited[v] = component; for (int to : graph[v]) if (!visited[to]) dfs(graph, to, visited, component); } int componentCount = 0; for (int v = 0; v < graph.size(); v++) if (!visited[v]) dfs(graph, v, visited, ++componentCount);
Ссылки на задачи
Ссылки
- e-maxx.ru — Поиск компонент связности
- neerc.ifmo.ru/wiki — Использование обхода в глубину для проверки связности
- brestprog — Поиск компонент связности
- algorithmica.org — Графы. Поиск в глубину
- informatics.mccme.ru — Курс «Алгоритмы на графах» — часть 2
- Калинин П. Поиск в глубину
- Лахно А. Поиск в глубину и его применение
- algs4.cs.princeton.edu/lectures — 4.1 Undirected Graphs
- VisuAlgo — Graph Traversal