Program To Implement Breadth First Search and Depth First Search in A Graph
Program To Implement Breadth First Search and Depth First Search in A Graph
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int cost[10][10],i,j,k,n,qu[10],front,rear,v,visit[10],visited[10],stack[10],top;
void BFS()
{
int m;
cout<<"Enter no of Vertices : ";
cin>>n;
cout<<"Enter no of edges : ";
cin>>m;
cout<<"\nEdges \n";
for(k=1;k<=m;k++)
{
cin>>i>>j;
cost[i][j]=1;
}
cout<<"Enter initial vertex : ";
cin>>v;
cout<<"Visited vertices \n";
cout<<v;
visited[v]=1;
k=1;
while(k<n)
{
for(j=1;j<=n;j++)
if(cost[v][j]!=0 && visited[j]!=1 && visit[j]!=1)
{
visit[j]=1;
qu[rear++]=j;
}
v=qu[front++];
cout<<v<< " ";
k++;
visit[v]=0;
visited[v]=1;
}
}
void DFS()
{
int m;
cout<<"Enter no of Vertices : ";
cin>>n;
cout<<"Enter no of edges : ";
cin>>m;
cout<<"\nEdges \n";
for(k=1;k<=m;k++)
{
cin>>i>>j;
cost[i][j]=1;
}
cout<<"Enter initial vertex : ";
cin>>v;
cout<<"Visited vertices \n";
cout<<v;
visited[v]=1;
k=1;
while(k<n)
{
for(j=n;j>=1;j--)
if(cost[v][j]!=0 && visited[j]!=1 && visit[j]!=1)
{
visit[j]=1;
stack[top]=j;
top++;
}
v=stack[--top];
cout<<v<< " ";
k++;
visit[v]=0;
visited[v]=1;
}
}
void main()
{
clrscr();
int ch;
cout<<"\n1. Breadth first search\n2. Depth first search\n3. Exit";
while(1)
{
cout<<"\nEnter your choice";
cin>>ch;
switch(ch)
{
case 1 : BFS();break;
case 2 : DFS();break;
case 3 : exit(0);
default : cout<<"\nInvalid choice" ;
}
}
getch();
}