Previous Next
0 / 4
Module DS-13DSJAVA

Deterministic BFS Order

DSJAVA β€’ Data Structures and Algorithms in Java

Browser-only practice

Problem Statement

Application lab in Graph Representations and Traversal

Mission

Traverse the source component in ascending-neighbor BFS order.

Learning outcome: Apply breadth-first traversal

Correctness contract

Invariant: A vertex is marked when discovered so every reachable vertex is processed once.

Required technique: Build undirected adjacency lists, sort neighbors, and mark each vertex when it is enqueued.

Complexity target: time O(V + E log V) including neighbor sorting; space O(V+E).

Input and output

Input: V and E, then E undirected vertex pairs, then the source vertex. Whitespace may be spaces or line breaks.

Output: Print the requested sequence on one line with single spaces and no trailing space. Return it as a String; Main.java prints it without adding other text.

Assumptions:

  • V is positive and every vertex index is in the range 0 through V - 1.
  • The declared edge count exactly matches the supplied pairs.

Before you code

  1. Restate the input and output contract, then predict the visible example without running code.
  2. Implement the core state transition: Build undirected adjacency lists, sort neighbors, and mark each vertex when it is enqueued.
  3. Trace the smallest boundary case, verify exact formatting, and justify the authored time and auxiliary-space bounds.

Implement Practice.solve(Scanner sc). Keep every provided filename and public class name unchanged.

Sample input

5 4 0 1 0 2 1 3 2 4 0

Sample output

0 1 2 3 4

Why the sample works: Visible walkthrough for the ordinary non-trivial path. A vertex is marked when enqueued, so sorted adjacency rows produce one deterministic discovery order. Input `5 4 0 1 0 2 1 3 2 4 0` therefore produces `0 1 2 3 4`.

Progressive hints

Try the trace and first milestone before opening a hint. Open them in order.

Open hint 1

Hint 1 β€” Contract: identify what each parsed variable represents and write the invariant beside the loop or recursive method.

Open hint 2

Hint 2 β€” Next step: Mark or assign distance at enqueue time, not at dequeue time.

Open hint 3

Hint 3 β€” Verification: compare the structure state before and after one operation, then test the smallest valid input and a duplicate or unreachable case when allowed.

Constraints

Input contract: V and E, then E undirected vertex pairs, then the source vertex.

  • V is positive and every vertex index is in the range 0 through V - 1.
  • The declared edge count exactly matches the supplied pairs.

Required technique: Build undirected adjacency lists, sort neighbors, and mark each vertex when it is enqueued.

Output contract: Print the requested sequence on one line with single spaces and no trailing space.

Use Java 8-compatible code only. Keep the public class names and Practice.solve(Scanner sc) signature from the starter files.

Input Format

V and E, then E undirected vertex pairs, then the source vertex.

Output Format

Print the requested sequence on one line with single spaces and no trailing space.

Sample Testcases

Submit runs every public testcase in this browser. Results and code never leave this device.

Sample #1
Public sample
5 4 0 1 0 2 1 3 2 4 0
0 1 2 3 4
Visible walkthrough for the ordinary non-trivial path. A vertex is marked when enqueued, so sorted adjacency rows produce one deterministic discovery order. Input `5 4 0 1 0 2 1 3 2 4 0` therefore produces `0 1 2 3 4`.

Web terminal

C, C++, Java, and Python run locally in a browser VM. No worker or visualizer is used.

Saved in this browser
Editor settings