Buenas, hice este algoritmo pero en la parte en que devuelve un ciclo creo que no estoy devolviendo uno, el último while es para eliminar los nodos que quedaron pero que no forman parte del ciclo, pero creo que en algunos casos borro nodos que pertenecen al ciclo ya que u puede ser cualquier nodo y entonces no necesariamente los últimos nodos de "ciclo" son los que tengo que eliminar.
Además, me parece que cuando tomo el primer nodo u y dentro del penúltimo while tendría que exigir que u este activo.
Saludos