Implement the BFS Traversals on Graphs.

#include<stdio.h>

#define size 10

int q[10],visited[10],a[10][10],f=-1,r=-1,n,v,w,st;

void bfs(int st);

void enqueue(int);

int dequeue();

int inqueue(int);

int main()

{

int i,j;

printf("enter no of vertices");

scanf("%d",&n);

printf("\nenter adjacent matrix for given graph");

for(i=1;i<=n;i++)

{

  for(j=1;j<=n;j++)

  {

     scanf("%d",&a[i][j]);

     visited[i]=0;

  }

}

printf("\nenter starting vertex");

scanf("%d",&st);

printf("\nbfs traversal of given graph");

bfs(st);

return 0;

}

void bfs(int st)

{

enqueue(st);

while(f!=-1&&r!=-1)

{

v=dequeue();

if(visited[v]==0)

{

visited[v]=1;

printf("->%d",v);

for(w=1;w<=n;w++)

{

if(a[v][w]==1)

{

if(visited[w]==0&&inqueue(w)==0)

{

enqueue(w);

}

}

}

}

}

}

void enqueue(int x)

{

if(r==size-1)

    printf("\n queue is overflow");

else

{

if(f==-1&&r==-1)

{

f=0;

r=0;

q[r]=x;

}

else

{

r=r+1;

q[r]=x;

}

}

}

int dequeue()

{

int item;

if(f==-1&&r==-1)

return -1;

else

{

if(f==r)

{

item=q[f];

f=-1;

r=-1;

return item;

}

else

{

item=q[f];

f=f+1;

return item;

}

}

}

int inqueue(int w)

{

int j;

for(j=f;j<=r;j++)

{

if(q[j]==w)

return 1;

}

return 0;

}


Comments