"""Найти цикломатическое число графа — минимальное число рёбер, которые надо удалить, чтобы граф стал ациклическим.

"""
"""Список смежности"""
V = [
    [1, 2],
    [0, 3],
    [0, 3],
    [2, 1]
]
"""Кол-во вершин, начинается с 0"""
n = 3

Color = [0] * (n + 1)

"""Если мы не попадали в вершину, то она белая - 0, если в обработке, то серая - 1. если прошли через вершину, то она становится черной - 2, если из серой вершины мы можем попасть в черную, то значит, что цикл есть"""
count = 0
def DFS(start):
    Color[start] = 1
    for u in V[start]:
        if Color[u] == 0:
            DFS(u)
        elif Color[start] == 1:
            print('Цикл найден')
            count = count + 1
    Color[start] = 2


for i in range(1, n + 1):
    if Color[i] == 0:
        DFS(i)

print("Требуется удалить ", count, " Ребер")