Graphs
Graphs
BFS : V0,V1,V2,3,V4,V5,V6,V7
Depth First Search
#include<stdio.h>
#include<stdlib.h>
int a[50][50], n, bvisited[50],dvisited[50];
int q[20], front = -1,rear = -1;
int s[20], top = -1, count=0;
void bfs(int v)
{
int i, cur;
bvisited[v] = 1;
q[++rear] = v;
while(front!=rear){
cur = q[++front];
for(i=1;i<=n;i++)
{
if( a[cur][i]==1 && bvisited[i]==0 )
{
q[++rear] = i;
bvisited[i] = 1;
printf("%d ", i);
}}}}
void dfs(int v)
{
int i;dvisited[v]=1;
s[++top] = v;
for(i=1;i<=n;i++)
{
if(a[v][i] == 1&& dvisited[i] == 0 )
{
printf("%d ", i);
dfs(i);
}}}
int main()
{
int ch, start, i,j;
printf("\nEnter the number of vertices in graph:");
scanf("%d",&n);
printf("\nEnter the adjacency matrix:\n");
for(i=1; i<=n;i++)
{ for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
}
for(i=1;i<=n;i++)
{
bvisited[i]=0; dvisited[i]=0;}
printf("\nEnter the starting vertex: ");
scanf("%d",&start);
while(1){
printf("\n==>1. BFS: Print all nodes reachable from a given starting node");
printf("\n==>2. DFS: Print all nodes reachable from a given starting node");
printf("\n==>3:Exit");
printf("\nEnter your choice: ");
scanf("%d", &ch);
switch(ch){
case 1: printf("\nNodes reachable from starting vertex %d are: ", start);
bfs(start);break;
case 2: printf("\nNodes reachable from starting vertex %d are:",start);
dfs(start);break;case 3: exit(0);default: printf("\nPlease enter valid choice:");}}}
Find out if graph is connected