1
1
#include <stdio.h>
2
2
#define size 50
3
+ //Time Complexity :- O((nv)^2)
4
+ //Space Complexity :- O(nv)
3
5
struct vertex {
4
6
int dist ,par ,processed ;
5
7
}V [size ];
6
8
int nv ;
7
9
//relax method is used to assign the shortest value to the node.
8
10
void relax (int w [size ][size ],int u ,int v ){
9
- //printf("RELAX %d %d\n",u,v);
10
11
if (V [v ].dist > V [u ].dist + w [u ][v ]){
11
12
V [v ].dist = V [u ].dist + w [u ][v ];
12
13
V [v ].par = u ;
13
14
}
14
15
}
15
-
16
+ //setting the source value to zero
16
17
void initializeSingleSource (int src ){
17
18
int i ;
18
19
for (i = 0 ; i < nv ; i ++ ){
19
- //printf("HERE ");
20
20
V [i ].dist = 99999 ;
21
21
V [i ].par = -1 ;
22
22
V [i ].processed = 0 ;
@@ -29,25 +29,24 @@ void dijkstra(int w[size][size],int src){
29
29
initializeSingleSource (src );
30
30
for (i = 0 ; i < nv ; i ++ ){
31
31
dmin = 999999 ;
32
- //printf("HERE ");
33
32
for (k = 0 ; k < nv ; k ++ ){
34
33
if (!V [k ].processed && V [k ].dist < dmin ){
35
34
dmin = V [k ].dist ;
36
35
ver = k ;
37
36
}
38
- // printf("K LOOP %d %d %d %d \n",k,ver,V[k].processed,V[k].dist);
37
+
39
38
}
40
- //printf("BETWEEN K AND J LOOP\n");
39
+
41
40
for (j = 0 ; j < nv ; j ++ ){
42
- //printf("j = %d V[j].processed = %d w[ver][j] = %d ",j,V[j].processed,w[ver][j]);
41
+
43
42
if (!V [j ].processed && w [ver ][j ]){
44
43
relax (w ,ver ,j );
45
- // printf("J LOOP %d \n",ver);
44
+
46
45
}
47
- // printf("J LOOP END\n");
46
+
48
47
}
49
48
V [ver ].processed = 1 ;
50
- //printf("I LOOP %d \n",V[ver].processed);
49
+
51
50
}
52
51
}
53
52
@@ -65,20 +64,7 @@ int main(){
65
64
int w [size ][size ];
66
65
printf ("ENTER NO. OF VERTICES \n" );
67
66
scanf ("%d" ,& nv );
68
- // int w[5][5] = {{0,10,0,5,0},
69
- // {0,0,1,2,0},
70
- // {0,0,0,0,4},
71
- // {0,3,9,0,2},
72
- // {7,0,6,0,0}};
73
- // printf("-------- THE WEIGHT MATRIX --------\n");
74
- // for(i = 0; i < nv; i++)
75
- // {
76
- // for(j = 0; j < nv; j++)
77
- // {
78
- // printf("w[%d][%d] = %d ",i,j,&w[i][j]);
79
- // }
80
- // printf("\n");
81
- // }
67
+
82
68
printf ("\nENTER THE WEIGHT MATRIX \n" );
83
69
for (i = 0 ; i < nv ; i ++ )
84
70
{
0 commit comments