0% found this document useful (0 votes)
49 views5 pages

Worksheet - 3.2: Branch: BE-CSE UID:19BCS1014 Section/Group: KRG-2B Semester: 5th

The document is a worksheet for analyzing Dijkstra's algorithm to find the shortest paths in a graph with positive edge weights. It includes the pseudocode for Dijkstra's algorithm, C++ code implementing the algorithm, and sample output showing the distances from the source vertex to all other vertices.

Uploaded by

MaaChudaScribd
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views5 pages

Worksheet - 3.2: Branch: BE-CSE UID:19BCS1014 Section/Group: KRG-2B Semester: 5th

The document is a worksheet for analyzing Dijkstra's algorithm to find the shortest paths in a graph with positive edge weights. It includes the pseudocode for Dijkstra's algorithm, C++ code implementing the algorithm, and sample output showing the distances from the source vertex to all other vertices.

Uploaded by

MaaChudaScribd
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

WORKSHEET –3.

Student Name: Priyanshu Sahoo UID:19BCS1014


Branch: BE-CSE Section/Group: KRG-2B
Semester: 5th
Subject Name: DAA LAB Subject Code: CSP-309

AIM: Code and analyze to find shortest paths in a graph with positive edge weights
using Dijkstra’s algorithm..

ALGORITHM:

Step 1. INITIALIZE - SINGLE - SOURCE (G, s)


Step 2. S←∅

Step 3. Q←V

[G]
Step 4. while Q ≠ ∅

Step 5. do u ← EXTRACT - MIN (Q)


Step 6. S ← S ∪ {u}
Step 7. for each vertex v ∈ Adj [u]

Step 8. do RELAX (u, v, w)


CODE:

#include
<iostream> using
namespace std;
#include
<limits.h>

#define V 9

int minDistance(int dist[], bool sptSet[])


{

int min = INT_MAX,

min_index; for (int v = 0; v

< V; v++)
if (sptSet[v] == false && dist[v]
<= min) min = dist[v],
min_index = v;

return min_index;
}

void printSolution(int dist[])


{
cout <<"Vertex \t Distance from Source"
<< endl; for (int i = 0; i < V; i++) cout
<< i << " \t\t"<<dist[i]<< endl;
}
void dijkstra(int graph[V][V], int src)
{

int dist[V];
bool
sptSet[V];
for (int i = 0; i < V; i++)
dist[i] = INT_MAX, sptSet[i] =

false; dist[src] = 0;

for (int count = 0; count < V - 1;

count++) { int u =

minDistance(dist, sptSet);

sptSet[u] = true;

for (int v = 0; v < V; v++)

if (!sptSet[v] && graph[u][v] && dist[u] !=


INT_MAX && dist[u] + graph[u][v] < dist[v])
dist[v] = dist[u] + graph[u][v];
}

printSolution(dist);
}
int main()
{

int graph[V][V] = { { 0, 4, 0, 0, 0, 0, 0, 8, 0 },
{4,0,8,0,0,0,0,11,0},
{0,8,0,7,0,4,0,0,2},
{0,0,7,0,9,14,0,0,0},
{0,0,0,9,0,10,0,0,0}, { 0, 0,
4, 14, 10, 0, 2, 0, 0 },
{0,0,0,0,0,2,0,1,6},
{8,11,0,0,0,0,1,0,7},
{0,0,2,0,0,0,6,7,0}};
dijkstra(graph, 0);

return 0;
}

OUTPUT

You might also like