Cycle detection must be efficient. The naive approach (DFS from every node) is ( O(n^2) ) per edge, leading to ( O(n^4) ) overall. Instead, use:
Initialize an empty directed graph ( G ). tideman algorithm