Dijkstra Program In C

#include<stdio.h>
#include<limits.h>

typedef enum {false, true} bool;

void dijkstra_algo(int g_raph[9][9], int source, int vertices_Count);
int minimum_distance(int d_istance[40],bool shortest_path_tree_set[9], int vertices_Count);
void p_rint(int d_istance[40], int vertices_Count);

int main( )
{
      int grd[9][9]= {
                              {1,6,10,20,2,30,40,19,50},
                              {3,40,4,20,50,4,20,1,60},
                              {40,67,40,12,10,23,30,20,56},
                              {10,60,25,30,19,116,70,80,90},
                              {40,30,20,29,10,10,40,50,70},
                              {20,40,62,60,120,50,22,21,80},
                              {40,40,50,116,20,32,40,21,16},
                              {59,141,60,20,60,20,171,50,85},
                              {60,80,32,40,60,70,64,75,40}
                           };
      digikstra_algo(g_raph,0,9);
      return 0;
}
int minimum_distance(int d_istance[40], bool shortest_path_tree_set[9], int vertice_Count)
{
      int v;
      int min = INT_MAX;
      int min_Index = 0;
      for(v=0;v<vertice_Count;++v)
      {
            if (shortest_path_tree_set[v]==false && d_istance[v]<=min)
            {
                  min = d_istance[v];
                  min_Index = v;
            }
      }
      return min_Index;     
}

void p_rint(int d_istance[ ], int vertices_Count)
{
      int i;
      printf(“Distance of Vertex from source is: \n”);
      for(i=0;i<vertices_Count;++i)
      {
           printf(“%d \t %d \n”,i, d_istance[i]);
      } 
}
void dijkstra_algo(int g_raph[9][9], int source, int vertices_Count)
{
    int count,v,i,j;
    int d_istance[40];
    bool shortest_path_tree_set[9];
    for(i=0;i<vertices_Count;i++)
    {
        d_istance[i]=INT_MAX;
        shortest_path_tree_set[i]=false;
    }
    d_istance[source]=0;
    
    for(count=0;count<vertices_Count-1;++count)
    {
          int u = minimum_distance(d_istance, shortest_path_tree_set, vertices_Count);
          
          printf(“Minimum Distance value is %d\n”,u);
          
          shortest_path_tree_set[u] = true;
          
               for(v=0;v<vertices_Count;++v)
               {
                   printf(“\n”);
                   printf(“the value of v  %d”, v);
                   printf(“\n”);
          
                   if(!shortest_path_tree_set[v])
                   {
                      printf(“I am in !shortest_path_tree_set[v] if statement \n”);
                     
                      if(d_istance[u]!=INT_MAX)
                      {
                             printf(“I am in d_istance[u]!=INT_MAX if statement  \n”);
                             printf(“%d \n”, g_raph[u][v]);
                             printf(“d_istance[v] %d \n”, d_istance[v]);
                             printf(“d_istance[source] %d \n”, d_istance[source]);
                             printf(“d_istance[u] %d \n”, d_istance[u]);
                             printf(“d_istance[u]+g_raph[u][v] %d \n”, d_istance[u]+g_raph[u][v]);
                             if( d_istance[u]+g_raph[u][v] < d_istance[v] )
                             {
                                    printf(“I am in d_istance[u]+graph[u][v]<d_istance[v] If statement \n”);
                                    d_istance[v]=d_istance[u]+g_raph[u][v];
                                    printf(“d_istance[v] %d \n”, d_istance[v]);
                              }
                         }
                  }
           }  
           p_rint(d_istance,vertices_Count);
}
Output:

Minimum Distance value is 0
the value of v 0
the value of v 1
I am in !shortest_Path_Tree_Set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
6
d_istance[v]  2147483647
d_istance[source]  0
d_istance[u]  0
d_istance[u]+g_raph[u][v]  6
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  6
the value of v 2
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
10
d_istance[v]  2147483647
d_istance[source]  0
d_istance[u]  0
d_istance[u]+g_raph[u][v]  10
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  10
the value of v 3
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
20
d_istance[v]  2147483647
d_istance[source]  0
d_istance[u]  0
d_istance[u]+g_raph[u][v]  20
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  20
the value of v 4
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
2
d_istance[v]  2147483647
d_istance[source]  0
d_istance[u]  0
d_istance[u]+g_raph[u][v]  2
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  2
the value of v 5
I am in !shortest_path_tree_Set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
30
d_istance[v]  2147483647
d_istance[source]  0
d_istance[u]  0
d_istance[u]+g_raph[u][v]  30
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  30
the value of v 6
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
40
d_istance[v]  2147483647
d_istance[source]  0
d_istance[u]  0
d_istance[u]+g_raph[u][v]  40
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  40
the value of v 7
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
19
d_istance[v]  2147483647
d_istance[source]  0
d_istance[u]  0
d_istance[u]+g_raph[u][v]  19
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  19
the value of v 8
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
50
d_istance[v]  2147483647
d_istance[source]  0
d_istance[u]  0
d_istance[u]+g_raph[u][v]  50
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  50
Vertex Distance from source: 
0          	 0
1          	 6
2          	 10
3          	 20
4          	 2
5          	 30
6          	 40
7          	 19
8          	 50
Minimum Distance value is 4
the value of v 0
the value of v 1
I am in !shortest_path_tree_Set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
30
d_istance[v]  6
d_istance[source]  0
d_istance[u]  2
d_istance[u]+g_raph[u][v]  32
the value of v 2
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
0
d_istance[v]  10
d_istance[source]  0
d_istance[u]  2
d_istance[u]+g_raph[u][v]  22
the value of v 3
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
29
d_istance[v]  20
d_istance[source]  0
d_istance[u]  2
d_istance[u]+g_raph[u][v]  31
the value of v 4
the value of v 5
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
10
d_istance[v]  30
d_istance[source]  0
d_istance[u]  2
d_istance[u]+graph[u][v]  12
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  12
the value of v 6
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
40
d_istance[v]  40
d_istance[source]  0
d_istance[u]  2
d_istance[u]+g_raph[u][v]  42
the value of v 7
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
50
d_istance[v]  19
d_istance[source]  0
d_istance[u]  2
d_istance[u]+g_raph[u][v]  52
the value of v 8
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
70
d_istance[v]  50
d_istance[source]  0
d_istance[u]  2
d_istance[u]+graph[u][v]  72
Vertex Distance from source: 
0          	 0
1          	 6
2          	 10
3          	 20
4          	 2
5          	 12
6          	 40
7          	 19
8          	 50
Minimum Distance value is 1
the value of v 0
the value of v 1
the value of v 2
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
4
d_istance[v]  10
d_istance[source]  0
d_istance[u]  6
d_istance[u]+g_raph[u][v]  10
the value of v 3
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
20
d_istance[v]  20
d_istance[source]  0
d_istance[u]  6
d_istance[u]+g_raph[u][v]  26
the value of v 4
the value of v 5
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
4
d_istance[v]  12
d_istance[source]  0
d_istance[u]  6
d_istance[u]+g_raph[u][v]  10
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  10
the value of v 6
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
20
d_istance[v]  40
d_istance[source]  0
d_istance[u]  6
d_istance[u]+graph[u][v]  26
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  26
the value of v 7
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
1
d_istance[v]  19
d_istance[source]  0
d_istance[u]  6
d_istance[u]+g_raph[u][v]  7
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  7
the value of v 8
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
60
d_istance[v]  50
d_istance[source]  0
d_istance[u]  6
d_istance[u]+g_raph[u][v]  66
Vertex Distance from source: 
0          	 0
1          	 6
2          	 10
3          	 20
4          	 2
5          	 10
6          	 26
7          	 7
8          	 50
Minimum Distance value is 7
the value of v 0
the value of v 1
the value of v 2
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
60
d_istance[v]  10
d_istance[source]  0
d_istance[u]  7
d_istance[u]+g_raph[u][v]  67
the value of v 3
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
20
d_istance[v]  20
d_istance[source]  0
d_istance[u]  7
d_istance[u]+g_raph[u][v]  27
the value of v 4
the value of v 5
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
20
d_istance[v]  10
d_istance[source]  0
d_istance[u]  7
d_istance[u]+g_raph[u][v]  27
the value of v 6
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
71
d_istance[v]  26
d_istance[source]  0
d_istance[u]  7
d_istance[u]+g_raph[u][v]  78
the value of v 7
the value of v 8
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
85
d_istance[v]  50
d_istance[source]  0
d_istance[u]  7
d_istance[u]+g_raph[u][v]  92
Distance of Vertex from source is: 
0          	 0
1          	 6
2          	 10
3          	 20
4          	 2
5          	 10
6          	 26
7          	 7
8          	 50
Minimum Distance value is 5
the value of v 0
the value of v 1
the value of v 2
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
62
d_istance[v]  10
d_istance[source]  0
d_istance[u]  10
d_istance[u]+g_raph[u][v]  72
the value of v 3
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
60
d_istance[v]  20
d_istance[source]  0
d_istance[u]  10
d_istance[u]+graph[u][v]  70
the value of v 4
the value of v 5
the value of v 6
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
22
d_istance[v]  26
d_istance[source]  0
d_istance[u]  10
d_istance[u]+g_raph[u][v]  32
the value of v 7
the value of v 8
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
80
d_istance[v]  50
d_istance[source]  0
d_istance[u]  10
d_istance[u]+g_raph[u][v]  90
Distance of Vertex from source is:  
0          	 0
1          	 6
2          	 10
3          	 20
4          	 2
5          	 10
6          	 26
7          	 7
8          	 50
Minimum Distance value is 2
the value of v 0
the value of v 1
the value of v 2
the value of v 3
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
12
d_istance[v]  20
d_istance[source]  0
d_istance[u]  10
d_istance[u]+g_raph[u][v]  22
the value of v 4
the value of v 5
the value of v 6
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
30
d_istance[v]  26
d_istance[source]  0
distance[u]  10
d_istance[u]+g_raph[u][v]  40
the value of v 7
the value of v 8
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
56
d_istance[v]  50
d_istance[source]  0
d_istance[u]  10
d_istance[u]+g_raph[u][v]  66
Distance of Vertex from source: 
0          	 0
1          	 6
2          	 10
3          	 20
4          	 2
5          	 10
6          	 26
7          	 7
8          	 50
Minimum Distance value is 3
the value of v 0
the value of v 1
the value of v 2
the value of v 3
the value of v 4
the value of v 5
the value of v 6
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
0
d_istance[v]  26
d_istance[source]  0
d_istance[u]  20
d_istance[u]+g_raph[u][v]  90
the value of v 7
the value of v 8
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
90
d_istance[v]  50
d_istance[source]  0
d_istance[u]  20
d_istance[u]+g_raph[u][v]  110
Vertex Distance from source: 
0          	 0
1          	 6
2          	 10
3          	 20
4          	 2
5          	 10
6          	 26
7          	 7
8          	 50
Minimum Distance value is 6
the value of v 0
the value of v 1
the value of v 2
the value of v 3
the value of v 4
the value of v 5
the value of v 6
the value of v 7
the value of v 8
I am in !shortest_path_tree_set[v] If statement
I am in (bool)g_raph[u,v] If statement
I am in d_istance[u]!=INT_MAX If statement
16
d_istance[v]  50
d_istance[source]  0
d_istance[u]  26
d_istance[u]+graph[u][v]  42
I am in d_istance[u]+g_raph[u,v] < d_istance[v] If statement
d_istance[v]  42
Distance of vertex from source is: 
0          	 0
1          	 6
2          	 10
3          	 20
4          	 2
5          	 10
6          	 26
7          	 7
8          	 42