Dado un gráfico dirigido, genera el ciclo más largo.
Reglas
- Se permite cualquier formato de entrada razonable (por ejemplo, lista de bordes, matriz de conectividad).
- Las etiquetas no son importantes, por lo que puede imponer restricciones a las etiquetas que necesita y / o desea, siempre que no contengan información adicional no proporcionada en la entrada (por ejemplo, no puede exigir que los nodos en los ciclos sean etiquetados con enteros y otros nodos están etiquetados con cadenas alfabéticas).
- Un ciclo es una secuencia de nodos que están todos conectados, y ningún nodo se repite, excepto el nodo que es el inicio y el final del ciclo (
[1, 2, 3, 1]
es un ciclo, pero[1, 2, 3, 2, 1]
no lo es). - Si el gráfico es acíclico, el ciclo más largo tiene una longitud 0 y, por lo tanto, debería producir una salida vacía (por ejemplo, lista vacía, sin salida).
- La repetición del primer nodo al final de la lista de nodos en el ciclo es opcional (
[1, 2, 3, 1]
y[1, 2, 3]
denota el mismo ciclo). - Si hay múltiples ciclos de la misma longitud, se puede generar uno o todos ellos.
- Las incorporaciones están permitidas, pero si su solución usa una, se le recomienda que incluya una solución alternativa que no utilice incorporaciones trivializantes (por ejemplo, una creación que genera todos los ciclos). Sin embargo, la solución alternativa no contará para su puntaje, por lo que es completamente opcional.
Casos de prueba
En estos casos de prueba, la entrada se proporciona como una lista de aristas (donde el primer elemento es el nodo de origen y el segundo elemento es el nodo de destino), y la salida es una lista de nodos sin repetición del primer / último nodo.
[(0, 0), (0, 1)] -> [0]
[(0, 1), (1, 2)] -> []
[(0, 1), (1, 0)] -> [0, 1]
[(0, 1), (1, 2), (1, 3), (2, 4), (4, 5), (5, 1)] -> [1, 2, 4, 5]
[(0, 1), (0, 2), (1, 3), (2, 4), (3, 0), (4, 6), (6, 8), (8, 0)] -> [0, 2, 4, 6, 8]
[(0, 0), (0, 8), (0, 2), (0, 3), (0, 9), (1, 0), (1, 1), (1, 6), (1, 7), (1, 8), (1, 9), (2, 1), (2, 3), (2, 4), (2, 5), (3, 8), (3, 1), (3, 6), (3, 7), (4, 1), (4, 3), (4, 4), (4, 5), (4, 6), (4, 8), (5, 0), (5, 8), (5, 4), (6, 0), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6), (6, 7), (6, 9), (7, 0), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 8), (7, 9), (8, 0), (8, 1), (8, 2), (8, 5), (8, 9), (9, 1), (9, 2), (9, 3), (9, 4), (9, 5), (9, 6)] -> [0, 9, 6, 7, 8, 2, 5, 4, 3, 1]
[(0, 0), (0, 2), (0, 4), (0, 5), (0, 7), (0, 9), (0, 11), (1, 2), (1, 4), (1, 5), (1, 8), (1, 9), (1, 10), (2, 0), (2, 1), (2, 3), (2, 4), (2, 5), (2, 6), (3, 0), (3, 1), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (3, 11), (4, 1), (4, 3), (4, 7), (4, 8), (4, 9), (4, 10), (4, 11), (5, 0), (5, 4), (5, 6), (5, 7), (5, 8), (5, 11), (6, 0), (6, 8), (6, 10), (6, 3), (6, 9), (7, 8), (7, 9), (7, 2), (7, 4), (7, 5), (8, 8), (8, 9), (8, 2), (8, 4), (8, 7), (9, 0), (9, 1), (9, 2), (9, 3), (9, 6), (9, 10), (9, 11), (10, 8), (10, 3), (10, 5), (10, 6), (11, 2), (11, 4), (11, 5), (11, 9), (11, 10), (11, 11)] -> [0, 11, 10, 6, 9, 3, 8, 7, 5, 4, 1, 2]