Dsaex 12
Dsaex 12
20/05/2024 ALGORITHM
Program:
#include <stdio.h>
#include <limits.h>
int adj[MAX][MAX];
int distance[MAX];
int visited[MAX];
int n;
int minDistance()
{
int min = INF, min_index;
for (int v = 0; v < n; v++)
{
if (visited[v] == 0 && distance[v] <= min)
{
min = distance[v], min_index = v;
}
}
return min_index;
}
void dijkstra(int src)
{
for (int i = 0; i < n; i++)
{
distance[i] = INF;
visited[i] = 0;
}
distance[src] = 0;
for (int count = 0; count < n - 1; count++)
{
int u = minDistance();
visited[u] = 1;
for (int v = 0; v < n; v++)
{
if (!visited[v] && adj[u][v] && distance[u] != INF && distance[u] + adj[u][v] <
distance[v])
{
distance[v] = distance[u] + adj[u][v];
}
}
}
printf("Vertex \t Distance from Source\n");
for (int i = 0; i < n; i++)
{
printf("%d \t %d\n", i, distance[i]);
}
}
int main()
{
int i, j, edges, origin, destin, weight;
printf("Enter the number of vertices: ");
scanf("%d", &n);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
adj[i][j] = 0;
}
}
int startVertex;
printf("Enter the starting vertex for Dijkstra's algorithm: ");
scanf("%d", &startVertex);
dijkstra(startVertex);
return 0;
}
Output:
Result:
The above program was successfully executed and the shortest path from the source
were calculated.