Untitled

 avatar
unknown
plain_text
9 months ago
1.0 kB
15
Indexable
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int graph[MAX][MAX],indegree[MAX],queue[MAX];
int n,front=0,rear=-1;
void addEdge(int u, int v)
{
	graph[u][v]=1;
	indegree[v]++;
}
void KahnTopologicalsort()
{
	int i;
	for (i=0;i<n;i++)
	{
		if(indegree[i]==0)
		queue[++rear]=i;
	}
	int count=0;
	printf("Topological sort(Kahn's Algorithm):");
	while(front<=rear)
	{
		int u=queue[front++],v;
		printf("%d",u);
		count ++;
		for(v=0;v<n;v++)
		{
			if (graph[u][v])
			{
				indegree[v]--;
				if (indegree[v]==0)
				  queue[++rear]=v;
			}
		}
	}
	if (count !=n)
	printf("\nGraph contains a cycle,topological sort not possible.\n");
}
int main()
{
	int edge,u,v,i;
	printf("Enter number of vertices:");
	scanf("%d",&n);
	printf("Enter number of edges:");
	scanf("%d",&edge);
	for(i=0;i<n;i++)
	  indegree[i]=0;
	  for(i=0;i<edge;i++)
	  {
	  	printf("Enter edge(u v):");
	  	scanf("%d %d",&u,&v);
	  	addEdge(u,v);
	  }
	  KahnTopologicalsort();
	  	return 0;
}
Editor is loading...
Leave a Comment