OneCompiler

bfs

95

#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;

}