#include <bits/stdc++.h>
using namespace std;
bool vis[105];
int level[105];
int parent[105];
vector<int> adj_list[105];
void bfs(int src) {
queue<int> q;
q.push(src); //src ke queue te push kora
vis[src] = true; // src visited
level[src] = 0; // src er level 0 dhore nilam
parent[src] = -1; // src er parent -1 dhore nilam
while(!q.empty()) {
int par = q.front();
q.pop();
for(auto child: adj_list[par]) {
if(!vis[child]) {
q.push(child);
vis[child] = true;
level[child] = level[par] + 1;
parent[child] = par;
}
}
}
}
int main() {
int n, e; cin >> n >> e;
while(e--) {
int a, b;
cin >> a >> b;
adj_list[a].push_back(b);
adj_list[b].push_back(a);
}
bfs(0);
int destination; cin >> destination;
cout << "shortest distance from 0 to " << destination << " is = " << level[destination] << "\n";
vector<int> path;
int node = destination;
while(node != -1) {
path.push_back(node);
node = parent[node];
}
reverse(path.begin(), path.end());
for(auto dir: path) {
cout << dir << " -> ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgdmlzWzEwNV07CmludCBsZXZlbFsxMDVdOwppbnQgcGFyZW50WzEwNV07Cgp2ZWN0b3I8aW50PiBhZGpfbGlzdFsxMDVdOwoKdm9pZCBiZnMoaW50IHNyYykgewogICAgcXVldWU8aW50PiBxOyAKICAgIHEucHVzaChzcmMpOyAvL3NyYyBrZSBxdWV1ZSB0ZSBwdXNoIGtvcmEKICAgIHZpc1tzcmNdID0gdHJ1ZTsgLy8gc3JjIHZpc2l0ZWQKICAgIGxldmVsW3NyY10gPSAwOyAvLyBzcmMgZXIgbGV2ZWwgMCBkaG9yZSBuaWxhbQogICAgcGFyZW50W3NyY10gPSAtMTsgLy8gc3JjIGVyIHBhcmVudCAtMSBkaG9yZSBuaWxhbQoKICAgIHdoaWxlKCFxLmVtcHR5KCkpIHsKICAgICAgICBpbnQgcGFyID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CgogICAgICAgIGZvcihhdXRvIGNoaWxkOiBhZGpfbGlzdFtwYXJdKSB7CiAgICAgICAgICAgIGlmKCF2aXNbY2hpbGRdKSB7CiAgICAgICAgICAgICAgICBxLnB1c2goY2hpbGQpOwogICAgICAgICAgICAgICAgdmlzW2NoaWxkXSA9IHRydWU7CiAgICAgICAgICAgICAgICBsZXZlbFtjaGlsZF0gPSBsZXZlbFtwYXJdICsgMTsKICAgICAgICAgICAgICAgIHBhcmVudFtjaGlsZF0gPSBwYXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW50IG4sIGU7IGNpbiA+PiBuID4+IGU7CgogICAgd2hpbGUoZS0tKSB7CiAgICAgICAgaW50IGEsIGI7IAogICAgICAgIGNpbiA+PiBhID4+IGI7CiAgICAgICAgYWRqX2xpc3RbYV0ucHVzaF9iYWNrKGIpOwogICAgICAgIGFkal9saXN0W2JdLnB1c2hfYmFjayhhKTsKICAgIH0KCiAgICBiZnMoMCk7CgogICAgaW50IGRlc3RpbmF0aW9uOyBjaW4gPj4gZGVzdGluYXRpb247CgogICAgY291dCA8PCAic2hvcnRlc3QgZGlzdGFuY2UgZnJvbSAwIHRvICIgPDwgZGVzdGluYXRpb24gPDwgIiBpcyA9ICIgPDwgbGV2ZWxbZGVzdGluYXRpb25dIDw8ICJcbiI7CgogICAgdmVjdG9yPGludD4gcGF0aDsKCiAgICBpbnQgbm9kZSA9IGRlc3RpbmF0aW9uOwoKICAgIHdoaWxlKG5vZGUgIT0gLTEpIHsKICAgICAgICBwYXRoLnB1c2hfYmFjayhub2RlKTsKICAgICAgICBub2RlID0gcGFyZW50W25vZGVdOwogICAgfQoKICAgIHJldmVyc2UocGF0aC5iZWdpbigpLCBwYXRoLmVuZCgpKTsKCiAgICBmb3IoYXV0byBkaXI6IHBhdGgpIHsKICAgICAgICBjb3V0IDw8IGRpciA8PCAiIC0+ICI7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=