hardDSA

How do you detect a cycle in a directed graph?

999 views
01

Understand the problem

Explain cycle detection.

graphscycle
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

DFS with 3 colors
Run Playground
def has_cycle(graph, n):
    # 0 = unvisited, 1 = in-progress, 2 = done
    state = [0] * n

    def dfs(u):
        state[u] = 1
        for v in graph[u]:
            if state[v] == 1:        # back edge -> cycle
                return True
            if state[v] == 0 and dfs(v):
                return True
        state[u] = 2
        return False

    return any(state[i] == 0 and dfs(i) for i in range(n))


# --- demo ---
print(has_cycle([[1], [2], [0]], 3))   # True  (0->1->2->0)
print(has_cycle([[1], [2], []], 3))    # False
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.