Cycle length in functional graph
Your task
You are given a functional graph as an array next where next[i] is the single outgoing edge from node i (every node has exactly one successor), or -1 if node i has no successor (a terminal). Starting from node 0 and repeatedly following next, return the length of the cycle you eventually enter, or 0 if the walk terminates (reaches a -1) without ever entering a cycle. Indices in next are valid node indices or -1.
Examples
cycle_length_from_zero(next_arr: list[int]) -> intExample 1
Input
cycle_length_from_zero([1, 2, 3, 1])Output
3