1. Определение компонент связности

компоненты связности

Напишите алгоритм, который находит все компоненты связности в графе.

Граф должен быть задан списком ребер.

Вход

В первой строке число NN (0N10000 \le N \le 1000 ) - количество вершин графа. В следующих строках записаны ребра, как пары чисел через пробел 42 12: вершина 42 и 12 связаны ребром.

Несуществующих вершин в этих строках не будет.

Выход

На выходе KK строк для каждой компоненты связности. В каждой строке через пробел числа этой компоненты связности.

Пример

Вход

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. Топологическая сортировка

граф отспортированный граф

Напишите алгоритм топологической сортировки графа. Имейте ввиду, что нужно проверить, есть в графе циклы или нет.

Можете реализовать любым способом: через поиск в глубину или через счетчики.