Задания_Графы

1. Напишите программу, которая будет принимать на вход граф одним образом (таблицей или последовательностью), и выводить другим (наоборот, последовательностью, или таблицей)

2. Напишите программу, которая будет принимать на вход граф в виде а) таблицы; б) последовательности рёбер, и после чего сможет ответить на N вопросов вида "есть ли ребро между Х и Y?".

3. Напишите программу, которая будет принимать на вход граф, после чего выводить, можно ли из Х добраться в Y не более, чем по а) 2; б) 3 рёбрам. 

4. Напишите программу, которая будет принимать на вход граф, после чего выводить вершины графа следующими "блоками": сначала "layer 0" и первую вершину, после чего "layer 1" и всех соседей первой вершины, "layer 2" и всех соседей соседей (кроме тех, которые уже были) и т.д. В самом конце "layer -1" и все вершины, до которых невозможно дойти из первой вершины.  

5*. Напишите программу, которая будет принимать на вход граф, после чего выводить, есть ли цикл в компоненте связности с первой вершиной.