#include <bits/stdc++.h>
using namespace std;
int graph[1000][1000];
int visit[1000];
int n, e;
//jekunu array globally declare korle tar shob value 0 hoye jay that's why we don't need memset
void BFS(int source)
{
visit[source]=1; //start of the initial step of BFS
cout<<source<<" ";
queue<int>q;
q.push(source); //end of initial step of BFS
while(!q.empty()) //the initial step will keep on repeating until the values are popped, in other words when the queue is empty
{
int x = q.front(); // this is so that the values don't get lost after being popped
q.pop();
for(int j=1; j<=n; j++) //this indicates column of a matrix
{
if(graph[x][j]!=0 && visit[j]==0) //we don't give 1 instead of !0 as their are graphs which has weight
{
visit[j]=1;
cout<<j<<" ";
q.push(j);
}
}
}
}
int main()
{
cout<<"Enter node and edge:";
cin>>n>>e;
int u,v;
for(int i=1; i<=e; i++)
{
cin>>u>>v;
graph[u][v]=1;
graph[v][u]=1;
}
BFS(1);
return 0;
}
/*
10 13
1 2
1 4
4 3
2 3
3 10
3 9
2 8
2 7
2 5
5 6
8 7
5 7
5 8
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBncmFwaFsxMDAwXVsxMDAwXTsKaW50IHZpc2l0WzEwMDBdOwppbnQgbiwgZTsKLy9qZWt1bnUgYXJyYXkgZ2xvYmFsbHkgZGVjbGFyZSBrb3JsZSB0YXIgc2hvYiB2YWx1ZSAwIGhveWUgamF5IHRoYXQncyB3aHkgd2UgZG9uJ3QgbmVlZCBtZW1zZXQKCnZvaWQgQkZTKGludCBzb3VyY2UpCnsKICAgIHZpc2l0W3NvdXJjZV09MTsgIC8vc3RhcnQgb2YgdGhlIGluaXRpYWwgc3RlcCBvZiBCRlMKICAgIGNvdXQ8PHNvdXJjZTw8IiAiOwogICAgcXVldWU8aW50PnE7CiAgICBxLnB1c2goc291cmNlKTsgIC8vZW5kIG9mIGluaXRpYWwgc3RlcCBvZiBCRlMKCiAgICB3aGlsZSghcS5lbXB0eSgpKSAvL3RoZSBpbml0aWFsIHN0ZXAgd2lsbCBrZWVwIG9uIHJlcGVhdGluZyB1bnRpbCB0aGUgdmFsdWVzIGFyZSBwb3BwZWQsIGluIG90aGVyIHdvcmRzIHdoZW4gdGhlIHF1ZXVlIGlzIGVtcHR5CiAgICB7CiAgICAgICAgaW50IHggPSBxLmZyb250KCk7IC8vIHRoaXMgaXMgc28gdGhhdCB0aGUgdmFsdWVzIGRvbid0IGdldCBsb3N0IGFmdGVyIGJlaW5nIHBvcHBlZAogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yKGludCBqPTE7IGo8PW47IGorKykgLy90aGlzIGluZGljYXRlcyBjb2x1bW4gb2YgYSBtYXRyaXgKICAgICAgICB7CiAgICAgICAgICAgIGlmKGdyYXBoW3hdW2pdIT0wICYmIHZpc2l0W2pdPT0wKSAvL3dlIGRvbid0IGdpdmUgMSBpbnN0ZWFkIG9mICEwIGFzIHRoZWlyIGFyZSBncmFwaHMgd2hpY2ggaGFzIHdlaWdodAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2aXNpdFtqXT0xOwogICAgICAgICAgICAgICAgY291dDw8ajw8IiAiOwogICAgICAgICAgICAgICAgcS5wdXNoKGopOwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgIH0KCn0KCmludCBtYWluKCkKewoKY291dDw8IkVudGVyIG5vZGUgYW5kIGVkZ2U6IjsKY2luPj5uPj5lOwoKaW50IHUsdjsKZm9yKGludCBpPTE7IGk8PWU7IGkrKykKewogICAgY2luPj51Pj52OwogICAgZ3JhcGhbdV1bdl09MTsKICAgIGdyYXBoW3ZdW3VdPTE7Cn0KCkJGUygxKTsKCnJldHVybiAwOwp9CgovKgoxMCAxMwoxIDIKMSA0CjQgMwoyIDMKMyAxMAozIDkKMiA4CjIgNwoyIDUKNSA2CjggNwo1IDcKNSA4CgoqLwoKCgoKCgoK