Bird
Raised Fist0
Data Structures Theoryknowledge~20 mins

Cycle detection in graphs in Data Structures Theory - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Cycle Detection Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding cycle detection in directed graphs

Which method is commonly used to detect cycles in a directed graph?

AUsing a minimum spanning tree algorithm
BBreadth-first search with queue tracking
CDepth-first search with recursion stack tracking
DSorting nodes by their degree
Attempts:
2 left
💡 Hint

Think about how to track nodes currently being explored to find back edges.

📋 Factual
intermediate
2:00remaining
Cycle detection in undirected graphs

What is a common approach to detect cycles in an undirected graph?

AUse Dijkstra's shortest path algorithm
BUse BFS and count the number of edges
CUse topological sorting
DUse DFS and check if a visited node is found that is not the parent
Attempts:
2 left
💡 Hint

Consider how revisiting a node that is not the immediate parent indicates a cycle.

🔍 Analysis
advanced
2:00remaining
Detecting cycles using Union-Find

Given an undirected graph, which statement about using Union-Find (Disjoint Set Union) to detect cycles is true?

AIf two vertices of an edge belong to the same set, adding that edge creates a cycle
BUnion-Find cannot detect cycles in undirected graphs
CUnion-Find detects cycles by counting the number of edges
DUnion-Find requires sorting edges by weight to detect cycles
Attempts:
2 left
💡 Hint

Think about what it means if two nodes are already connected before adding an edge.

Comparison
advanced
2:00remaining
Comparing cycle detection in directed vs undirected graphs

Which of the following correctly contrasts cycle detection in directed and undirected graphs?

ADirected graphs require tracking recursion stack; undirected graphs require parent tracking in DFS
BBoth use the same method of checking visited nodes without parent tracking
CCycle detection in undirected graphs uses recursion stack; directed graphs use parent tracking
DCycle detection is not possible in directed graphs
Attempts:
2 left
💡 Hint

Consider how direction affects the way cycles are detected.

Reasoning
expert
2:00remaining
Cycle detection output reasoning

Consider the following undirected graph edges: (1-2), (2-3), (3-4), (4-2). After running a cycle detection algorithm using DFS, what is the number of cycles detected?

Data Structures Theory
Edges: [(1,2), (2,3), (3,4), (4,2)]
A2
B1
C0
D3
Attempts:
2 left
💡 Hint

Trace the DFS and identify if multiple cycles or a single cycle exists.

Practice

(1/5)
1. What is the main purpose of cycle detection in a graph?
easy
A. To count the number of nodes
B. To find if there is a loop in the graph
C. To sort the nodes in ascending order
D. To find the shortest path between nodes

Solution

  1. Step 1: Understand the concept of cycle detection

    Cycle detection checks if a graph contains any loops where you can start at a node and return to it by following edges.
  2. Step 2: Identify the main goal

    The main goal is to find if such loops exist, which can cause problems like infinite loops in algorithms.
  3. Final Answer:

    To find if there is a loop in the graph -> Option B
  4. Quick Check:

    Cycle detection = find loops [OK]
Hint: Cycle detection means finding loops in graphs [OK]
Common Mistakes:
  • Confusing cycle detection with sorting
  • Thinking it counts nodes instead of finding loops
  • Assuming it finds shortest paths
2. Which data structure is commonly used to detect cycles in a directed graph using DFS?
easy
A. Queue
B. Stack
C. Hash Set to track recursion stack
D. Priority Queue

Solution

  1. Step 1: Recall DFS cycle detection method

    DFS explores nodes deeply and uses a recursion stack to track nodes currently in the path.
  2. Step 2: Identify the data structure used

    A hash set or boolean array is used to track nodes in the recursion stack to detect back edges indicating cycles.
  3. Final Answer:

    Hash Set to track recursion stack -> Option C
  4. Quick Check:

    DFS cycle detection uses recursion stack tracking [OK]
Hint: Use a hash set to track nodes in current DFS path [OK]
Common Mistakes:
  • Using queue instead of stack for DFS
  • Not tracking recursion stack nodes
  • Confusing with BFS cycle detection
3. Consider the directed graph edges: [(1, 2), (2, 3), (3, 4), (4, 2)]. Does this graph contain a cycle?
medium
A. Yes, there is a cycle involving nodes 2, 3, and 4
B. Yes, but only between nodes 1 and 2
C. No, it is acyclic
D. No, because node 1 has no incoming edges

Solution

  1. Step 1: Trace the edges to find cycles

    Edges form path 1->2->3->4 and then 4->2, which loops back to node 2.
  2. Step 2: Identify the cycle nodes

    The cycle is formed by nodes 2, 3, and 4 because you can go from 2 to 3 to 4 and back to 2.
  3. Final Answer:

    Yes, there is a cycle involving nodes 2, 3, and 4 -> Option A
  4. Quick Check:

    Edges 4->2 create cycle 2-3-4 [OK]
Hint: Look for edges that point back to earlier nodes [OK]
Common Mistakes:
  • Ignoring the edge 4->2 that closes the cycle
  • Thinking node 1's edges affect cycle
  • Assuming no cycle if start node has no incoming edges
4. Given this DFS-based cycle detection pseudocode, what is the error?
function dfs(node):
  visited[node] = true
  for neighbor in graph[node]:
    if visited[neighbor]:
      return true
    if dfs(neighbor):
      return true
  return false
medium
A. It does not track nodes in the current recursion stack
B. It marks nodes as visited too late
C. It should use a queue instead of recursion
D. It returns false too early

Solution

  1. Step 1: Analyze the visited marking

    The code marks nodes as visited but does not distinguish between nodes visited in current path and fully processed nodes.
  2. Step 2: Identify missing recursion stack tracking

    Without tracking nodes in the current recursion stack, it cannot detect back edges properly, causing false negatives.
  3. Final Answer:

    It does not track nodes in the current recursion stack -> Option A
  4. Quick Check:

    Missing recursion stack tracking causes wrong cycle detection [OK]
Hint: Track recursion stack separately to detect cycles [OK]
Common Mistakes:
  • Using only visited array without recursion stack
  • Confusing visited with recursion stack
  • Thinking recursion depth causes error
5. You have a task scheduling system represented as a directed graph where edges mean "task A must finish before task B starts." How can cycle detection help in this system?
hard
A. It counts the total number of tasks
B. It finds tasks that can run in parallel
C. It sorts tasks by their duration
D. It detects impossible schedules due to circular dependencies

Solution

  1. Step 1: Understand task scheduling graph meaning

    Edges show dependencies; a cycle means tasks depend on each other in a loop.
  2. Step 2: Identify the role of cycle detection

    If a cycle exists, the schedule is impossible because tasks wait on each other endlessly.
  3. Final Answer:

    It detects impossible schedules due to circular dependencies -> Option D
  4. Quick Check:

    Cycle detection finds circular dependencies [OK]
Hint: Cycles mean tasks depend on each other endlessly [OK]
Common Mistakes:
  • Thinking cycle detection sorts tasks
  • Assuming cycles allow parallel tasks
  • Confusing cycle detection with counting tasks