#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<int> bfs(int start, vector<int> adj[], int n) {
int vis[n + 1] = {0};
vis[start] = 1;
vector<int> bfsGraph;
queue<int> q;
q.push(start);
bfsGraph.push_back(start);
while (!q.empty()) {
int node = q.front();
q.pop();
for (int it : adj[node]) {
if (!vis[it]) {
q.push(it);
vis[it] = 1;
bfsGraph.push_back(it);
}
}
}
return bfsGraph;
}
int main() {
int n, m;
cout << "Enter the number of nodes and edges: ";
cin >> n >> m;
vector<int> adj[n + 1];
cout << "Enter the edges : " << endl;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
int start;
cout << "Enter the starting node: ";
cin >> start;
vector<int> bfsResult = bfs(start, adj, n);
cout << "BFS traversal order: ";
for (int i = 0; i < bfsResult.size(); i++) {
cout << bfsResult[i] << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gYmZzKGludCBzdGFydCwgdmVjdG9yPGludD4gYWRqW10sIGludCBuKSB7CiAgICBpbnQgdmlzW24gKyAxXSA9IHswfTsgIAogICAgdmlzW3N0YXJ0XSA9IDE7ICAgICAgICAKICAgIHZlY3RvcjxpbnQ+IGJmc0dyYXBoOyAgCiAgICBxdWV1ZTxpbnQ+IHE7ICAgICAgICAgIAoKICAgIHEucHVzaChzdGFydCk7ICAgICAgICAgCiAgICBiZnNHcmFwaC5wdXNoX2JhY2soc3RhcnQpOyAgCiAgICAKICAgIHdoaWxlICghcS5lbXB0eSgpKSB7CiAgICAgICAgaW50IG5vZGUgPSBxLmZyb250KCk7ICAKICAgICAgICBxLnBvcCgpOyAgICAgICAgICAgICAgIAogICAgICAgIGZvciAoaW50IGl0IDogYWRqW25vZGVdKSB7CiAgICAgICAgICAgIGlmICghdmlzW2l0XSkgeyAgCiAgICAgICAgICAgICAgICBxLnB1c2goaXQpOyAgCiAgICAgICAgICAgICAgICB2aXNbaXRdID0gMTsgIAogICAgICAgICAgICAgICAgYmZzR3JhcGgucHVzaF9iYWNrKGl0KTsgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBiZnNHcmFwaDsgCn0KCmludCBtYWluKCkgewogICAgaW50IG4sIG07IAogICAgY291dCA8PCAiRW50ZXIgdGhlIG51bWJlciBvZiBub2RlcyBhbmQgZWRnZXM6ICI7CiAgICBjaW4gPj4gbiA+PiBtOwoKICAgIHZlY3RvcjxpbnQ+IGFkaltuICsgMV07CgogICAgY291dCA8PCAiRW50ZXIgdGhlIGVkZ2VzIDogIiA8PCBlbmRsOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh1KTsgCiAgICB9CgogICAgaW50IHN0YXJ0OwogICAgY291dCA8PCAiRW50ZXIgdGhlIHN0YXJ0aW5nIG5vZGU6ICI7CiAgICBjaW4gPj4gc3RhcnQ7CgogIAogICAgdmVjdG9yPGludD4gYmZzUmVzdWx0ID0gYmZzKHN0YXJ0LCBhZGosIG4pOwoKICAgIGNvdXQgPDwgIkJGUyB0cmF2ZXJzYWwgb3JkZXI6ICI7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGJmc1Jlc3VsdC5zaXplKCk7IGkrKykgewogICAgICAgIGNvdXQgPDwgYmZzUmVzdWx0W2ldIDw8ICIgIjsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=