function
addEdge(adj, u, v) {
adj[u].push(v);
adj[v].push(u);
return
adj;
}
function
BFS(N, source, adjlist) {
let dist =
new
Array(N + 1).fill(-1);
let vertex_set = [[], []];
let Q = [];
Q.push(source);
dist = 0;
while
(Q.length > 0) {
let u = Q.shift();
vertex_set[dist[u] % 2].push(u);
for
(let i = 0; i < adjlist[u].length; i++) {
let v = adjlist[u][i];
if
(dist[v] === -1) {
dist[v] = dist[u] + 1;
Q.push(v);
}
}
}
return
vertex_set;
}
function
findSet(N, adjlist) {
let source = 1;
let vertex_set = BFS(N, source, adjlist);
let inn = 0;
if
(vertex_set[1].length < vertex_set[0].length) {
inn = 1;
}
for
(let node of vertex_set[inn]) {
console.log(node);
}
}
let N = 5;
let M = 8;
let adjlist =
new
Array(N + 1).fill([]);
adjlist = addEdge(adjlist, 2, 5);
adjlist = addEdge(adjlist, 2, 1);
adjlist = addEdge(adjlist, 5, 1);
adjlist = addEdge(adjlist, 4, 5);
adjlist = addEdge(adjlist, 1, 4);
adjlist = addEdge(adjlist, 2, 4);
adjlist = addEdge(adjlist, 3, 4);
adjlist = addEdge(adjlist, 3, 5);
findSet(N, adjlist);