/*Implementation of Shortest Path Algorithm(DIJKSRTRA's ALGORITHM) in C*/

#include< stdio.h>

#include< conio.h>

#include< process.h>

#include< string.h>

#include< math.h>

#define IN 99

#define N 6

int dijkstra(int cost[][N], int source, int target);

void main()

{

int cost[N][N],i,j,w,ch,co;

int source, target,x,y;

clrscr();

printf("\tShortest Path Algorithm(DIJKSRTRA's ALGORITHM\n\n");

for(i=1;i< N;i++)

for(j=1;j< N;j++)

cost[i][j] = IN;

for(x=1;x< N;x++)

{

for(y=x+1;y< N;y++)

{

printf("Enter the weight of the path between node %d and %d: ",x,y);

scanf("%d",&w);

cost [x][y] = cost[y][x] = w;

}

printf("\n");

}

printf("\nEnter The Source:");

scanf("%d", &source);

printf("\nEnter The target");

scanf("%d", &target);

co = dijsktra(cost,source,target);

printf("\nShortest Path: %d",co);

getch();

}

int dijsktra(int cost[][N],int source,int target)

{

int dist[N],prev[N],selected[N]={0},i,m,min,start,d,j;

char path[N];

for(i=1;i< N;i++)

{

dist[i] = IN;

prev[i] = -1;

}

start = source;

selected[start]=1;

dist[start] = 0;

while(selected[target] ==0)

{

min = IN;

m = 0;

for(i=1;i< N;i++)

{

d = dist[start] +cost[start][i];

if(d< dist[i]&&selected[i]==0)

{

dist[i] = d;

prev[i] = start;

}

if(min>dist[i] && selected[i]==0)

{

min = dist[i];

m = i;

}

}

start = m;

selected[start] = 1;

}

start = target;

j = 0;

while(start != -1)

{

path[j++] = start+65;

start = prev[start];

}

path[j]='\0';

strrev(path);

printf("%s", path);

return dist[target];

}

/***** Output *********

Shortest Path Algorithm(DIJKSRTRA's ALGORITHM

Enter the weight of the path between node 1 and 2: 2

Enter the weight of the path between node 1 and 3: 3

Enter the weight of the path between node 1 and 4: 4

Enter the weight of the path between node 1 and 5: 5

Enter the weight of the path between node 2 and 3: 5

Enter the weight of the path between node 2 and 4: 2

Enter the weight of the path between node 2 and 5: 3

Enter the weight of the path between node 3 and 4: 1

Enter the weight of the path between node 3 and 5: 4

Enter the weight of the path between node 4 and 5: 5

Enter The Source:2

Enter The target4

CE

Shortest Path: 2

*/

## Thursday, October 2, 2008

Subscribe to:
Post Comments (Atom)

## 10 comments:

You are very genius. i like this program

You are very genius. i like this program

this you'r program have syntax eror.

you look "dijsktra" not valid with "dijkstra"

thank you.

thanks for the program

THe program is very amazing, but i see the is an error ==>"Call to undefined function 'dijkstra' in function main()

Thank YOu

hey ur program doesnt handle a case...

when there is no path between source and destination

stack

stack

hey it is returning number of paths from source to destination instead of shortest path could please rectify it , i have the same doubt .thank you

hey instead of returning shortest path your program is returing number of paths from source to destination, could you please rectify it , i'm trying to solve this since long back couldn't get it please help me

Post a Comment