#include #include #include #include using namespace std; int N, M; vector v[100]; int start; void input() { scanf("%d %d", &N, &M); int a, b; for( int i = 0; i < M; i++ ) { scanf("%d %d", &a, &b); v[a-1].push_back(b-1); v[b-1].push_back(a-1); } scanf("%d", &start); start--; } bool used[100]; void bfs() { queue q; vector vertices; cout << "#0: " << start+1 << endl; q.push(start); used[start] = 1; int br1 = 1, br2 = 0; int level = 1; while( !q.empty() ) { int tmp = q.front(); q.pop(); br1--; for( int i = 0; i < v[tmp].size(); i++ ) if( !used[v[tmp][i]] ) { used[v[tmp][i]] = 1; q.push(v[tmp][i]); vertices.push_back(v[tmp][i]); br2++; } if( br1 == 0 && br2 ) { br1 = br2; br2 = 0; cout << "#" << level << ": "; for( int i = 0 ; i < vertices.size(); i++ ) cout << vertices[i]+1 << " "; cout << endl; vertices.clear(); level++; } } cout << endl; } int main() { input(); bfs(); return 0; } /** 8 9 1 3 1 9 1 2 2 8 2 5 2 10 10 9 5 7 7 10 1 **/