bfs
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int graph[MAX][MAX], visited[MAX], queue[MAX];
int front = 0, rear = 0;
void enqueue(int node) {
queue[rear++] = node;
}
int dequeue() {
return queue[front++];
}
void bfs(int start, int n) {
enqueue(start);
visited[start] = 1;
while (front < rear) {
int node = dequeue();
printf("%d ", node);
for (int i = 0; i < n; i++) {
if (graph[node][i] && !visited[i]) {
enqueue(i);
visited[i] = 1;
}
}
}
}
int main() {
int n, edges, u, v, start;
scanf("%d", &n);
scanf("%d", &edges);
for (int i = 0; i < edges; i++) {
scanf("%d %d", &u, &v);
graph[u][v] = graph[v][u] = 1;
}
scanf("%d", &start);
bfs(start, n);
printf("\n");
return 0;
}