Cycle length in functional graph

Write codeMedium30 min

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]) -> int
Example 1
Inputcycle_length_from_zero([1, 2, 3, 1])
Output3