Longest Cycle in a Graph LeetCode solution in Python
1class Solution:2def longestCycle(self, edges: List[int]) -> int:3preorder = [-1 for _ in range(len(edges))]4self.ans = -15self.pre = 067def dfs(self, i: int, st: int) -> None:8preorder[i] = self.pre9self.pre += 11011if edges[i] == -1:12return13elif preorder[edges[i]] == -1:14dfs(self, edges[i], st)15return16elif preorder[edges[i]] >= st:17self.ans = max(self.ans, preorder[i] - preorder[edges[i]] + 1)18return1920for i in range(len(edges)):21if preorder[i] == -1 and edges[i] != -1:22dfs(self, i, self.pre)2324return self.ans