Dato un grafico diretto, emette il ciclo più lungo.
Regole
- È consentito qualsiasi formato di input ragionevole (ad es. Elenco dei bordi, matrice di connettività).
- Le etichette non sono importanti, pertanto è possibile imporre restrizioni sulle etichette necessarie e / o desiderate, purché non contengano informazioni aggiuntive non fornite nell'input (ad esempio, non è possibile richiedere che i nodi nei cicli siano etichettato con numeri interi e altri nodi sono etichettati con stringhe alfabetiche).
- Un ciclo è una sequenza di nodi che sono tutti collegati e nessun nodo viene ripetuto, tranne il nodo che è l'inizio e la fine del ciclo (
[1, 2, 3, 1]
è un ciclo, ma[1, 2, 3, 2, 1]
non lo è). - Se il grafico è aciclico, il ciclo più lungo ha lunghezza 0 e quindi dovrebbe produrre un output vuoto (ad es. Elenco vuoto, nessun output).
- La ripetizione del primo nodo alla fine dell'elenco dei nodi nel ciclo è facoltativa (
[1, 2, 3, 1]
e[1, 2, 3]
indica lo stesso ciclo). - Se sono presenti più cicli della stessa lunghezza, è possibile che vengano emessi uno o tutti i cicli.
- I builtin sono consentiti, ma se la tua soluzione ne utilizza uno, sei incoraggiato a includere una soluzione alternativa che non utilizza builtin banalizzanti (ad esempio un builtin che genera tutti i cicli). Tuttavia, la soluzione alternativa non verrà considerata per il tuo punteggio, quindi è del tutto facoltativa.
Casi test
In questi casi di test, l'input viene fornito come un elenco di spigoli (in cui il primo elemento è il nodo di origine e il secondo elemento è il nodo di destinazione) e l'output è un elenco di nodi senza ripetizione del primo / ultimo 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]