На странице представлен фрагмент
Реши любую задачу с помощью нейросети.
Алгоритм поиска компонент связности в неориентированном графе можно реализовать с помощью обхода в глубину (DFS).
Шаги решения:
1. Считываем количество вершин и ребер графа из входных данных.
2. Создаем пустой список компонент связности.
3. Инициализируем пустой стек для обхода в глубину.
4. Создаем пустое множество посещенных вершин.
5. Для каждой вершины v, которая еще не была посещена:
5.1. Создаем новую пустую компоненту связности.
5.2. Помещаем вершину v в стек.
5.3. Пока стек не пуст:
5.3.1. Извлекаем вершину u из стека.
5.3.2. Если вершина u не была посещена:
5.3.2.1. Добавляем вершину u в текущую компоненту связности.
5.3.2.2. Помечаем вершину u как посещенную.
5.3.2.3. Для каждой смежной с вершиной u вершины w:
5.3.2.3.1. Если вершина w не была посещена, помещаем ее в стек.
5.4. Добавляем текущую компоненту связности в список компонент связности.
6. Выводим количество компонент связности и сами компоненты в выходные данные.
Алгоритм работает за время O(n+m), где n – количество вершин, m – количество ребер.
Выходные данные – список компонент связности, где каждая компонента представлена списком вершин. В первой строке выводится количество компонент связности.