Suche nach einem Zyklus in einer Permutation mit maximaler Summe
Python
Hard
loops
Aufgabe «Suche nach einem Zyklus in einer Permutation mit maximaler Summe»
Gegeben ist eine Permutation der Zahlen von 1 bis N. Betrachten Sie einen gerichteten Graphen, in dem jeder Knoten i eine Kante zu a[i] hat. Finden Sie einen Zyklus in diesem Graphen, dessen Summe der Elemente maximal ist. Falls es mehrere solcher Zyklen gibt, geben Sie einen beliebigen aus. Es ist garantiert, dass N ≥ 2. Ein Zyklus ist definiert als eine Folge von verschiedenen Knoten, bei der jeder nächste Knoten nach der Regel erhalten wird: nächster = a[aktueller], und der letzte Knoten kehrt über eine Kante zum ersten zurück.
Eingabeformat
Die erste Zeile enthält eine ganze Zahl N (2 ≤ N ≤ 10^5). Die zweite Zeile enthält N ganze Zahlen a[1], a[2], ..., a[N] — eine Permutation der Zahlen von 1 bis N.
Ausgabeformat
Geben Sie zwei Zahlen aus: die Länge des Zyklus und die Summe der Elemente des Zyklus. Geben Sie dann in der nächsten Zeile die Elemente des Zyklus in der Reihenfolge des Durchlaufs aus, beginnend mit einem beliebigen Element.
Beispiele
Beispiel 1
EINGABE
5
2 3 1 5 4
AUSGABE
2 9
4 5
Beispiel 2
EINGABE
7
1 2 3 4 5 6 7
AUSGABE
1 7
7
Beispiel 3
EINGABE
4
abc
cde
xyz
zab
AUSGABE
Invalid input
Beispiel 4
EINGABE
4
2 1 4 3
AUSGABE
2 7
3 4
Beispiel 5
EINGABE
3
1 0 2
AUSGABE
1 1
1
main.py