Untitled
unknown
plain_text
a year ago
1.4 kB
4
Indexable
#include<stdio.h>
int q[20], front=-1,rear=-1,a[20][20], vis[20];
int delete();
void add(int item);
void bfs(int s,int n);
void main() {
	int n,e,i,s,j,u,v;
	printf("Enter the number of vertices in the graph: "); 
	scanf("%d", &n);
	printf("Enter the number of edges in the graph: "); 
	scanf("%d", &e);
	printf("Enter the edges (u, v):\n"); 
	for (i = 1; i<=e; i++)
	{
		scanf("%d %d", &u, &v);
		a[u][v] = 1;
	}
	printf("THE ADJACENCY MATRIX IS\n"); 
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			printf("%d",a[i][j]);
		}
		printf("\n");
	}
	for(i=1;i<=n;i++)
		vis[i]=0;
	printf("ENTER THE SOURCE VERTEX :"); 
	scanf("%d",&s);
	bfs(s,n);
}
void bfs(int s,int n)
{
	int p,i;
	add(s);
	vis[s]=1;
	p=delete();
	if(p!=0) 
		printf("%d",p); 
	while(p!=0)
	{
		for(i=1;i<=n;i++) 
			if((a[p][i]!=0)&&(vis[i]==0)) { 
				add(i); 
				vis[i]=1; 
			}
		p=delete();
	
		if(p!=0)
			printf("%d ",p);
	}
	for(i=1;i<=n;i++) 
		if(vis[i]==0) 
			bfs(i,n);
}
void add(int item)
{
	if(rear==19) 
		printf("QUEUE FULL");
	else
	{
		if(rear==-1)
		{
			q[++rear]=item;
			front++;
		}
	else
		q[++rear]=item;
	}
}
int delete()
{
	int k;
	if((front>rear)||(front==-1))
		return(0);
	else
	{
		k=q[front++];
		return(k);
	}
}Editor is loading...
Leave a Comment