BFS in C
#include<conio.h>
#include<stdio.h>
int adj[15][15];
void bfs(int v, int n)
{
int qu[n], visited[n+1], frnt=-1, rear=-1, i;
for(i=0;i<n+1;i++)
visited[i]=0;
printf("BFS is : %d ",v);
visited[v]=1;
rear++; frnt++;
qu[rear]=v;
while(frnt<=rear)
{
v=qu[frnt];
frnt++;
for(i=1;i<=n;i++)
{
if(adj[v][i]==1 && visited[i]==0)
{
printf("%d ",i);
visited[i]=1;
rear++;
qu[rear]=i;
}
}
}
}
void create(int n)
{
int maxnodes=n*((n-1)/2),i,u,v,j;
for(i=0;i<maxnodes;i++)
{
printf("Origin & dest:(0,0 to exit): ");
scanf("%d %d",&u,&v);
if(u==0 && v==0)
break;
else if( u> n || v > n || u<=0 || v<=0)
{
printf("Invalid edge!\n");
i--;
}
else
{
adj[u][v]=1;
adj[v][u]=1;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{printf("%d ",adj[i][j]);}
printf("\n");
}
}
int main()
{
int n,i,j,vertex,choice,ch;
printf("enter the number of nodes: ");
scanf("%d",&n);
create(n);
printf("\nenter the starting vertex : ");
scanf("%d",&vertex);
bfs(vertex,n);
}
Comments
Post a Comment