7. BFS – Breadth First Search
#include < stdio.h>
int graph[10][10], visited[10], queue[10];
int n, front = 0, rear = -1;
void BFS(int start)
{
int i, v;
visited[start] = 1;
queue[++rear] = start;
while(front <= rear)
{
v = queue[front++];
printf("%d ", v + 1);
for(i = 0; i < n; i++)
{
if(graph[v][i] == 1 && visited[i] == 0)
{
visited[i] = 1;
queue[++rear] = i;
}
}
}
}
int main()
{
int i, j, start;
printf("Enter the number of vertices: ");
scanf("%d", &n);
printf("Enter the adjacency matrix:\n");
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
scanf("%d", &graph[i][j]);
}
}
for(i = 0; i < n; i++)
visited[i] = 0;
printf("Enter the starting vertex: ");
scanf("%d", &start);
printf("BFS Traversal: ");
BFS(start - 1);
return 0;
}
Example input:
5
0 1 1 0 0
1 0 0 1 1
1 0 0 0 0
0 1 0 0 0
0 1 0 0 0
1
Output:
BFS Traversal: 1 2 3 4 5