import java.util.*;
import java.lang.*;
import java.io.*;
class Main
{
{
Scanner sc
= new Scanner
(System.
in);
if (!sc.hasNextInt()) return;
int vertices = sc.nextInt();
int edges = sc.nextInt();
// Initialize Adjacency List
List<List<Integer>> adj = new ArrayList<>();
for (int i = 0; i < vertices; i++) {
adj.add(new ArrayList<>());
}
// Read all graph edges from standard input
for (int i = 0; i < edges; i++) {
int u = sc.nextInt();
int v = sc.nextInt();
// Build an undirected graph
adj.get(u).add(v);
adj.get(v).add(u);
}
int startNode = sc.nextInt();
System.
out.
print("BFS Traversal starting from node " + startNode
+ ": "); bfs(startNode, vertices, adj);
}
public static void bfs(int startNode, int vertices, List<List<Integer>> adj) {
Queue<Integer> queue = new LinkedList<>();
boolean[] visited = new boolean[vertices];
visited[startNode] = true;
queue.add(startNode);
while (!queue.isEmpty()) {
int curr = queue.poll();
for (int neighbor : adj.get(curr)) {
if (!visited[neighbor]) {
visited[neighbor] = true;
queue.add(neighbor);
}
}
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBNYWluCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCQoJCQoJCWlmICghc2MuaGFzTmV4dEludCgpKSByZXR1cm47CgkJCgkJaW50IHZlcnRpY2VzID0gc2MubmV4dEludCgpOwoJCWludCBlZGdlcyA9IHNjLm5leHRJbnQoKTsKCQkKCQkvLyBJbml0aWFsaXplIEFkamFjZW5jeSBMaXN0IAoJCUxpc3Q8TGlzdDxJbnRlZ2VyPj4gYWRqID0gbmV3IEFycmF5TGlzdDw+KCk7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCB2ZXJ0aWNlczsgaSsrKSB7CgkJCWFkai5hZGQobmV3IEFycmF5TGlzdDw+KCkpOwoJCX0KCQkKCQkvLyBSZWFkIGFsbCBncmFwaCBlZGdlcyBmcm9tIHN0YW5kYXJkIGlucHV0CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBlZGdlczsgaSsrKSB7CgkJCWludCB1ID0gc2MubmV4dEludCgpOwoJCQlpbnQgdiA9IHNjLm5leHRJbnQoKTsKCQkJCgkJCS8vIEJ1aWxkIGFuIHVuZGlyZWN0ZWQgZ3JhcGgKCQkJYWRqLmdldCh1KS5hZGQodik7CgkJCWFkai5nZXQodikuYWRkKHUpOwoJCX0KCQkKCQoJCWludCBzdGFydE5vZGUgPSBzYy5uZXh0SW50KCk7CgkJCgkJU3lzdGVtLm91dC5wcmludCgiQkZTIFRyYXZlcnNhbCBzdGFydGluZyBmcm9tIG5vZGUgIiArIHN0YXJ0Tm9kZSArICI6ICIpOwoJCWJmcyhzdGFydE5vZGUsIHZlcnRpY2VzLCBhZGopOwoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBiZnMoaW50IHN0YXJ0Tm9kZSwgaW50IHZlcnRpY2VzLCBMaXN0PExpc3Q8SW50ZWdlcj4+IGFkaikgewoJCVF1ZXVlPEludGVnZXI+IHF1ZXVlID0gbmV3IExpbmtlZExpc3Q8PigpOwoJCWJvb2xlYW5bXSB2aXNpdGVkID0gbmV3IGJvb2xlYW5bdmVydGljZXNdOwoKCQkKCQl2aXNpdGVkW3N0YXJ0Tm9kZV0gPSB0cnVlOwoJCXF1ZXVlLmFkZChzdGFydE5vZGUpOwoKCQl3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewoJCQlpbnQgY3VyciA9IHF1ZXVlLnBvbGwoKTsKCQkJU3lzdGVtLm91dC5wcmludChjdXJyICsgIiAiKTsKCgkJCQoJCQlmb3IgKGludCBuZWlnaGJvciA6IGFkai5nZXQoY3VycikpIHsKCQkJCWlmICghdmlzaXRlZFtuZWlnaGJvcl0pIHsKCQkJCQl2aXNpdGVkW25laWdoYm9yXSA9IHRydWU7CgkJCQkJcXVldWUuYWRkKG5laWdoYm9yKTsKCQkJCX0KCQkJfQoJCX0KCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsKCX0KfQo=