BFS

 

#include <stdio.h>
int queue[100];
int front = 0, back = 0;
void push(int var) {
    queue[back++] = var;
}
void pop() {
    front++;
}
int main() {
    int graph[10][10], visited[10] = {0};
    int n, v, i, j;
    printf("Enter the number of vertices: ");
    scanf("%d", &n);
    printf("Enter graph data in matrix form:\n");
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            scanf("%d", &graph[i][j]);
    printf("Enter the starting vertex: ");
    scanf("%d", &v);
    if (v < 1 || v > n)
    {
        printf("Invalid starting vertex.\n");
        return 1;
    }

    visited[v - 1] = 1;
    push(v);
    printf("BFS traversal: ");
    while (front != back)
     {
        int current = queue[front];
        printf("%d ", current);
        pop();
        for (i = 0; i < n; i++)
        {
            if (graph[current - 1][i] == 1 && visited[i] == 0)
            {
                visited[i] = 1;
                push(i + 1);
            }
        }
    }
    printf("\n");
    return 0;
}

Comments

Popular posts from this blog

SINGLE LINKED LIST by smd

CLL by smd

QUEUE USING ARRAYS by smd