Skip to content

Instantly share code, notes, and snippets.

@suryansh011
Created November 10, 2021 12:08
Show Gist options
  • Save suryansh011/f2e598b582e67adf56cd320121e997cd to your computer and use it in GitHub Desktop.
Save suryansh011/f2e598b582e67adf56cd320121e997cd to your computer and use it in GitHub Desktop.
Dijkstra Implementation in C
#include<stdio.h>
#include<conio.h>
#define INFINITY 9999
#define MAX 10
void dijikstra(int G[MAX][MAX], int n, int startnode) {
int cost[MAX][MAX], distance[MAX], pred[MAX];
int visited[MAX], count, mindistance, nextnode, i,j;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
if(G[i][j] == 0)
cost[i][j] = INFINITY;
else
cost[i][j] = G[i][j];
for(i = 0; i < n; i++) {
distance[i] = cost[startnode][i];
pred[i] = startnode;
visited[i] = 0;
}
distance[startnode] = 0;
visited[startnode] = 1;
count = 1;
while(count < n-1) {
mindistance = INFINITY;
for(i = 0; i < n; i++)
if(distance[i] < mindistance && !visited[i]) {
mindistance = distance[i];
nextnode = i;
}
visited[nextnode] = 1;
for(i = 0; i < n; i++)
if(!visited[i])
if(mindistance+cost[nextnode][i] < distance[i]) {
distance[i] = mindistance + cost[nextnode][i];
pred[i] = nextnode;
}
count++;
}
for(i = 0; i < n; i++)
if(i != startnode) {
printf("\nDistance of %d = %d", i, distance[i]);
printf("\nShortest Path = %d", i);
j = i;
do {
j = pred[j];
printf("<-%d", j);
}
while(j != startnode);
}
}
int main() {
int G[MAX][MAX], i, j, n, u;
printf("\nEnter the number of vertices: ");
scanf("%d", &n);
printf("\nEnter the adjacency matrix: \n");
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
scanf("%d", &G[i][j]);
printf("\nEnter the starting node: ");
scanf("%d", &u);
dijikstra(G,n,u);
printf("\n\nNAME\nROLL\nSECTION");
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment