Bei einem gerichteten Graphen den längsten Zyklus ausgeben.
Regeln
- Jedes sinnvolle Eingabeformat ist zulässig (z. B. Kantenliste, Konnektivitätsmatrix).
- Die Bezeichnungen sind nicht wichtig, daher können Sie den von Ihnen benötigten und / oder gewünschten Bezeichnungen Einschränkungen auferlegen, sofern sie keine zusätzlichen Informationen enthalten, die nicht in der Eingabe enthalten sind (z. B. können Sie nicht verlangen, dass die Knoten in Zyklen vorhanden sind mit ganzen Zahlen beschriftet, und andere Knoten sind mit alphabetischen Zeichenfolgen beschriftet).
- Ein Zyklus ist eine Folge von Knoten, die alle miteinander verbunden sind, und es wird kein Knoten wiederholt, außer dem Knoten, der Beginn und Ende des Zyklus ist (
[1, 2, 3, 1]
ein Zyklus ist, aber[1, 2, 3, 2, 1]
nicht). - Wenn der Graph azyklisch ist, hat der längste Zyklus die Länge 0 und sollte daher eine leere Ausgabe ergeben (z. B. leere Liste, überhaupt keine Ausgabe).
- Das Wiederholen des ersten Knotens am Ende der Liste der Knoten im Zyklus ist optional (
[1, 2, 3, 1]
und[1, 2, 3]
bezeichnet denselben Zyklus). - Wenn es mehrere Zyklen gleicher Länge gibt, können einer oder alle ausgegeben werden.
- Builtins sind zulässig, aber wenn Ihre Lösung eine verwendet, sollten Sie eine alternative Lösung einbeziehen, die keine trivialisierenden Builtins verwendet (z. B. ein Builtin, das alle Zyklen ausgibt). Die alternative Lösung wird jedoch nicht für Ihre Punktzahl angerechnet, so dass dies völlig optional ist.
Testfälle
In diesen Testfällen wird die Eingabe als eine Liste von Kanten (wobei das erste Element der Quellknoten und das zweite Element der Zielknoten ist) und die Ausgabe als eine Liste von Knoten ohne Wiederholung des ersten / letzten Knotens angegeben.
[(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]