在排列中寻找具有最大和的循环

Python Hard loops

任务 «在排列中寻找具有最大和的循环»

给定一个从1到N的数字排列。考虑一个有向图,其中每个顶点i都有一条指向a[i]的边。请找出该图中元素之和最大的环。如果有多个这样的环,输出任意一个。保证N ≥ 2。环定义为一系列不同的顶点,其中每个下一个顶点按规则得到:下一个 = a[当前],并且最后一个顶点通过边返回到第一个顶点。

输入格式

第一行包含一个整数 N (2 ≤ N ≤ 10^5)。第二行包含 N 个整数 a[1], a[2], ..., a[N] —— 这是从 1 到 N 的一个排列。

输出格式

输出两个数字:循环的长度和循环元素的总和。然后在下一行输出循环遍历的元素,从任意一个元素开始。

示例

示例 1

输入
5 2 3 1 5 4
输出
2 9 4 5

示例 2

输入
7 1 2 3 4 5 6 7
输出
1 7 7

示例 3

输入
4 abc cde xyz zab
输出
Invalid input

示例 4

输入
4 2 1 4 3
输出
2 7 3 4

示例 5

输入
3 1 0 2
输出
1 1 1
main.py