You are on page 1of 2

// BFS using ARRAYS

#include<stdio.h>
#define max 10
int q[max],f=-1,r=-1,p=0;
void enqueue(int x)
{
if(r==max-1)
printf("\n full queue");
else
{
q[++r]=x;
}
if(f==-1)
f=0;
}

int is_empty_Q()
{
if(f==-1||f>r)
return 0;
else
return 1;
}

int dequeue()
{
int x;
if(f==-1||f>r)
printf("\n queue is empty");
else
{
x=q[f++];
return x;
}
}
main()
{
int i,j,g[50][50],v,n,s,visit[10],w;

printf("\n\n BFS using arrays ");


printf("\n Enter the no. of vertices :: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
visit[i]=0;
printf("\n Adjacency Matrix ...\n");

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&g[i][j]);

printf("\n Starting vertex :: ");


scanf("%d",&s);

printf("\nBFS Order ::");


enqueue(s);

visit[s]=1;
printf("%d\t",v);
while(is_empty_Q())
{
v=dequeue();

for(w=1;w<=n;w++)
{
if(g[v][w]==1)
{
if(visit[w]!=1)
{
printf("%d\t",w);
enqueue(w);
visit[w]=1;
}
}
}

// DFS using ARRAYS

#include<stdio.h>
void dfs(int);
int a[20][20],n,visit[20];
main()
{
int i,j,s;
printf("\nEnter the no. of vertices :: ");
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++)
visit[i]=0;
printf("\nEnter the starting vertex :: ");
scanf("%d",&s);
printf("\nDFS of the graph ::");
dfs(s);
}
void dfs(int i)
{
int j,k,s;
visit[i]=1;
printf("%d\t",i);
for(j=1;j<=n;j++)
if((a[i][j]==1)&&(visit[j]==0))
{
dfs(j);
}
}

You might also like