/*
================== DEPTH FIRST SEARCH ==================
*/
#include <bits/stdc++.h>
using namespace std;
void DFS ( int node, vector<int>* G, vector<bool>& visited ){
// print the visited node
cout << node << " ";
// mark the current node as visited
visited[node] = true;
// for all the adjacent nodes of the current node
for( int adj : G[node] ){
// if the adjacent node is not already visited then visit it
if( !visited[adj] )
DFS( adj, G, visited );
}
}
int main() {
// V = number of vertices, E = number of edges
int V, E;
cin >> V >> E;
// adjacency list
vector<int>* G = new vector<int>[V];
vector<bool> visited(V, false);
int p,q;
while(E--){
cin>>p>>q;
// As it is an undirected graph we are pushing two edges between one pair of vertices
G[p].push_back(q);
G[q].push_back(p);
}
// Visiting all the Verices once in Depth First Manner
for( int i=0 ; i<V ; i++ ){
if( !visited[i] )
DFS(i, G, visited);
}
return 0;
}
LyoKCT09PT09PT09PT09PT09PT09PSBERVBUSCBGSVJTVCBTRUFSQ0ggPT09PT09PT09PT09PT09PT09CiovCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBERlMgKCBpbnQgbm9kZSwgdmVjdG9yPGludD4qIEcsIHZlY3Rvcjxib29sPiYgdmlzaXRlZCApewoJCgkvLyBwcmludCB0aGUgdmlzaXRlZCBub2RlCgljb3V0IDw8IG5vZGUgPDwgIiAiOwoJLy8gbWFyayB0aGUgY3VycmVudCBub2RlIGFzIHZpc2l0ZWQKCXZpc2l0ZWRbbm9kZV0gPSB0cnVlOwoJCgkvLyBmb3IgYWxsIHRoZSBhZGphY2VudCBub2RlcyBvZiB0aGUgY3VycmVudCBub2RlCglmb3IoIGludCBhZGogOiBHW25vZGVdICl7CgkJLy8gaWYgdGhlIGFkamFjZW50IG5vZGUgaXMgbm90IGFscmVhZHkgdmlzaXRlZCB0aGVuIHZpc2l0IGl0CgkJaWYoICF2aXNpdGVkW2Fkal0gKQoJCSAgREZTKCBhZGosIEcsIHZpc2l0ZWQgKTsKCX0gCn0gCgppbnQgbWFpbigpIHsKCQoJLy8gViA9IG51bWJlciBvZiB2ZXJ0aWNlcywgRSA9IG51bWJlciBvZiBlZGdlcwogICAgaW50IFYsIEU7CiAgICBjaW4gPj4gViA+PiBFOwoKICAgIC8vIGFkamFjZW5jeSBsaXN0IAogICAgdmVjdG9yPGludD4qIEcgPSBuZXcgdmVjdG9yPGludD5bVl07CiAgICB2ZWN0b3I8Ym9vbD4gdmlzaXRlZChWLCBmYWxzZSk7CiAgICAKICAgIGludCBwLHE7CiAgICB3aGlsZShFLS0pewogICAgICAgIGNpbj4+cD4+cTsKICAgICAgICAvLyBBcyBpdCBpcyBhbiB1bmRpcmVjdGVkIGdyYXBoIHdlIGFyZSBwdXNoaW5nIHR3byBlZGdlcyBiZXR3ZWVuIG9uZSBwYWlyIG9mIHZlcnRpY2VzCiAgICAgICAgR1twXS5wdXNoX2JhY2socSk7CQogICAgICAgIEdbcV0ucHVzaF9iYWNrKHApOwogICAgfQogICAgCiAgICAvLyBWaXNpdGluZyBhbGwgdGhlIFZlcmljZXMgb25jZSBpbiBEZXB0aCBGaXJzdCBNYW5uZXIKICAgIGZvciggaW50IGk9MCA7IGk8ViA7IGkrKyApewogICAgCWlmKCAhdmlzaXRlZFtpXSApCiAgICAJCURGUyhpLCBHLCB2aXNpdGVkKTsKICAgIH0KCiAgcmV0dXJuIDA7Cn0=