From 518f09570f4e4470a28d448b990f8e5cc4ccc38f Mon Sep 17 00:00:00 2001 From: Pritam <95082658+pritam1309@users.noreply.github.com> Date: Thu, 20 Oct 2022 21:54:58 +0530 Subject: [PATCH] =?UTF-8?q?Create=20Dijkstra=E2=80=99s=20Shortest=20Path?= =?UTF-8?q?=20Algorithm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...stra\342\200\231s Shortest Path Algorithm" | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 "Dijkstra\342\200\231s Shortest Path Algorithm" diff --git "a/Dijkstra\342\200\231s Shortest Path Algorithm" "b/Dijkstra\342\200\231s Shortest Path Algorithm" new file mode 100644 index 0000000..1ec05cb --- /dev/null +++ "b/Dijkstra\342\200\231s Shortest Path Algorithm" @@ -0,0 +1,119 @@ + +#include +#define INFINITY 9999 +#define MAX 10 + +void Dijkstra(int Graph[MAX][MAX], int n, int start); + +void Dijkstra(int Graph[MAX][MAX], int n, int start) { + 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 (Graph[i][j] == 0) + cost[i][j] = INFINITY; + else + cost[i][j] = Graph[i][j]; + + for (i = 0; i < n; i++) { + distance[i] = cost[start][i]; + pred[i] = start; + visited[i] = 0; + } + + distance[start] = 0; + visited[start] = 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++; + } + + // Printing the distance + for (i = 0; i < n; i++) + if (i != start) { + printf("\nDistance from source to %d: %d", i, distance[i]); + } +} +int main() { + int Graph[MAX][MAX], i, j, n, u; + n = 7; + + Graph[0][0] = 0; + Graph[0][1] = 0; + Graph[0][2] = 1; + Graph[0][3] = 2; + Graph[0][4] = 0; + Graph[0][5] = 0; + Graph[0][6] = 0; + + Graph[1][0] = 0; + Graph[1][1] = 0; + Graph[1][2] = 2; + Graph[1][3] = 0; + Graph[1][4] = 0; + Graph[1][5] = 3; + Graph[1][6] = 0; + + Graph[2][0] = 1; + Graph[2][1] = 2; + Graph[2][2] = 0; + Graph[2][3] = 1; + Graph[2][4] = 3; + Graph[2][5] = 0; + Graph[2][6] = 0; + + Graph[3][0] = 2; + Graph[3][1] = 0; + Graph[3][2] = 1; + Graph[3][3] = 0; + Graph[3][4] = 0; + Graph[3][5] = 0; + Graph[3][6] = 1; + + Graph[4][0] = 0; + Graph[4][1] = 0; + Graph[4][2] = 3; + Graph[4][3] = 0; + Graph[4][4] = 0; + Graph[4][5] = 2; + Graph[4][6] = 0; + + Graph[5][0] = 0; + Graph[5][1] = 3; + Graph[5][2] = 0; + Graph[5][3] = 0; + Graph[5][4] = 2; + Graph[5][5] = 0; + Graph[5][6] = 1; + + Graph[6][0] = 0; + Graph[6][1] = 0; + Graph[6][2] = 0; + Graph[6][3] = 1; + Graph[6][4] = 0; + Graph[6][5] = 1; + Graph[6][6] = 0; + + u = 0; + Dijkstra(Graph, n, u); + + return 0; +}