Компоненты связности
Сколько в графе «островков» — обход с раскраской каждой компоненты.
1function components(graph: Map<string, string[]>): string[][] {2 const visited = new Set<string>()3 const result: string[][] = []4 5 for (const start of graph.keys()) {6 if (visited.has(start)) continue7 8 const comp: string[] = []9 const stack = [start]10 visited.add(start)11 while (stack.length > 0) {12 const v = stack.pop() as string13 comp.push(v)14 for (const next of graph.get(v) ?? []) {15 if (!visited.has(next)) {16 visited.add(next)17 stack.push(next)18 }19 }20 }21 result.push(comp)22 }23 24 return result25}Проблема
Сколько в графе «островков» — обход с раскраской каждой компоненты.
Что вы видите
Каждый незапущенный запуск DFS красит новый остров своим цветом.
Как это работает
Прогон DFS/BFS из каждой непосещённой вершины: каждый запуск — одна компонента. Сети, соцграфы, сегментация изображений.
Пошаговый разбор
- 01
Новая вершина
Не посещена — новая компонента.
- 02
Обход
Красим всё достижимое.
- 03
Счёт
Число запусков = число компонент.
Complexity и ограничения
См. complexity в шапке страницы.
Edge cases
- Пустой вход
Корректно завершается без лишних шагов.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Продукт
Классический приём в реальных системах.
Собеседования
Стандартный вопрос на понимание структуры.
Связанные алгоритмы
«Сколько островков в графе?»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.