Longest Cycle in a Graph LeetCode solution in Python

1
class Solution:
2
def longestCycle(self, edges: List[int]) -> int:
3
preorder = [-1 for _ in range(len(edges))]
4
self.ans = -1
5
self.pre = 0
6

7
def dfs(self, i: int, st: int) -> None:
8
preorder[i] = self.pre
9
self.pre += 1
10

11
if edges[i] == -1:
12
return
13
elif preorder[edges[i]] == -1:
14
dfs(self, edges[i], st)
15
return
16
elif preorder[edges[i]] >= st:
17
self.ans = max(self.ans, preorder[i] - preorder[edges[i]] + 1)
18
return
19

20
for i in range(len(edges)):
21
if preorder[i] == -1 and edges[i] != -1:
22
dfs(self, i, self.pre)
23

24
return self.ans

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0