Implement prototype(n, edges, source) and solve(n, edges, source). Vertices are 0..n-1 and directed edges are [u, v, weight] with nonnegative integer weight. Parallel edges, self-loops and zero weights are valid. Return minimum Number costs in vertex order, source 0 and null unreachable.

For n=3, edges [[0, 1, 7], [0, 2, 2], [2, 1, 1]], source 0, return [0, 3, 2]. n<=0, invalid source/endpoints or negative edge weight throws RangeError.

Prototype: enumerate simple paths. Final: Dijkstra with a min-heap and stale-entry checks. Preserve edges on success and failure.

All numeric inputs and finite arithmetic results in this lesson are safe-integer Numbers. Use null for documented absence, not undefined or a numeric sentinel. Return actual booleans where the contract requires them. Do not add validation requirements beyond the documented inputs.

Run with Node.js 20+ from this directory:

Shell
node main.mjs --stage prototype
node main.mjs --stage final

Edit exercise.mjs; keep main.mjs unchanged. Both stages begin as unfinished learner functions. The website uses the same test functions in a separate browser worker. Tests check deterministic examples, boundaries, documented validation, input preservation, and stage-specific cases. Passing tests does not prove the required time complexity.

Drag or use the arrow keys to resize. Home collapses the question; End collapses the editor. Enter or double-click resets the split.
Loading editor…
No results yet.

Complete the starter code, then run the checks.
Results and errors will appear here.