You learned that functional graphs have exactly one outgoing edge per node, creating tail-into-cycle structure. This constraint makes them predictable and exploitable. You used Floyd's algorithm for cycle detection, binary lifting for -th successor queries, and DFS for cycle decomposition.
Each technique handles a different type of query efficiently. You solved problems involving path distances, cycle lengths, and permutation analysis. These techniques apply to linked lists, permutations, and simulation problems. Functional graphs appear more often than you might expect.