1. Определение компонент связности
Напишите алгоритм, который находит все компоненты связности в графе.
Граф должен быть задан списком ребер.
Вход
В первой строке число () - количество вершин графа. В следующих строках записаны ребра, как пары чисел через пробел 42 12
: вершина 42
и 12
связаны ребром.
Несуществующих вершин в этих строках не будет.
Выход
На выходе строк для каждой компоненты связности. В каждой строке через пробел числа этой компоненты связности.
Пример
Вход
10
8 1
1 0
0 2
1 4
3 6
3 7
7 9
Выход
0 1 4 8 2
5
6 3 7 9
2. Топологическая сортировка
Напишите алгоритм топологической сортировки графа. Имейте ввиду, что нужно проверить, есть в графе циклы или нет.
Можете реализовать любым способом: через поиск в глубину или через счетчики.