Untitled
unknown
plain_text
9 months ago
1.0 kB
13
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