function shortestPathUnitWeight(n, edges) {
const graph = Array.from({ length: n }, () => []);
// Build the undirected graph
for (const [u, v] of edges) {
graph[u].push(v);
graph[v].push(u);
}
const distance = new Array(n).fill(-1);
const queue = [0];
distance[0] = 0;
while (queue.length > 0) {
const current = queue.shift();
for (const neighbor of graph[current]) {
if (distance[neighbor] === -1) {
distance[neighbor] = distance[current] + 1;
queue.push(neighbor);
}
}
}
return distance;
}
// Example usage:
console.log("Shortest distances:", shortestPathUnitWeight(4, [[0,1],[0,2],[1,3]])); // Output: [0,1,1,2]
console.log("Disconnected graph:", shortestPathUnitWeight(3, [[0,1]])); // Output: [0,1,-1]