def findJordanCenter(matrix):

    if not isTree(matrix):
        print("Nie jest to drzewo")
        return

    tree_size = len(matrix)

    if tree_size < 3:
        vertexes = [i for i in range(tree_size)]
        return vertexes

    tree = Graph(tree_size)
    tree.buildFromMatrix(matrix)
    vertexes = [i for i in range(tree_size)]

    vertexes_left_size = len(vertexes)
    # max length of the center is 2
    while vertexes_left_size > 2:
        for vertex in list(vertexes):
            degree = tree.findVertexDegree(vertex)
            print("Wierzchołek: ", vertex, "  Stopien: ", degree)
            if degree == 1:
                print("Liśc: ", vertex)
                tree.removeEdgesAssociatedToVertex(vertex)
                # removing leaves
                vertexes.remove(vertex)
        vertexes_left_size = len(vertexes)

    print("Centrum Jordana: ", vertexes)
    return vertexes
def searchCycle(matrix):
    size = len(matrix)
    graph = Graph(size)
    graph.buildFromMatrix(matrix)
    min_graph_degree = graph.findMinGraphDegree()

    if min_graph_degree < 2:
        print("Za niski minimalny stopień grafu")
        return
    else:
        vertexes = []
        cycle = DFS(matrix, 0, vertexes, min_graph_degree)

    print("Cykl: ", cycle)
    return