Facebook Pixel

Detect Cycle in an Undirected Connected Graph (DFS)

JavaScript
medium
30 mins

You receive the graph as an array of edge pairs edges, where each pair [u, v] represents a bidirectional connection between nodes u and v. Implement hasCycle(edges) that:

  • Builds an adjacency list from those pairs.
  • Starts DFS from node 0 only.
  • Returns true as soon as DFS encounters a neighbor that is visited and not the immediate parent.

Examples

Input: edges = [[0, 1], [1, 2]] Output: false
Input: edges = [[0, 1], [1, 2], [2, 0]] Output: true

Constraints

  • Nodes are assumed to be integers that can act as object keys.
  • Edges should always include the component that contains node 0; the function never explores other components.
  • Inputs are expected to be well-formed arrays of two-item arrays; no explicit validation is performed.
  • Self-loops or malformed inputs can lead to unexpected results because no guards are present.

Function Signature

function hasCycle(edges) { // Your code here }

Test Cases

  • Base cases: [], single edge [ [0, 1] ]
  • Triangle: [ [4,3], [4,5], [3,5] ] -> true
  • Disconnected graphs with and without cycles
  • Graphs anchored at node 0 that either stay acyclic or form a cycle
  • Cases where the first DFS branch already hits a back edge

Companies:

amazon
microsoft
uber
adobe

Solve Similar questions 🔥

Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.