C++ program – Solve the single source shortest path problem Using Dijkstra’s algorithm

by Nideesh C on April 14, 2011 · 0 comments

in C++




#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
int shortest(int ,int);
int cost[10][10],dist[20],i,j,n,k,m,S[20],v,totcost,path[20],p;
main()
{
int c;
cout <<"enter no of vertices";
cin >> n;
cout <<"enter no of edges";
cin >>m;
cout <<"\nenter\nEDGE Cost\n";
for(k=1;k<=m;k++)
{
cin >> i >> j >>c;
cost[i][j]=c;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(cost[i][j]==0)
cost[i][j]=31999;
cout <<"enter initial vertex";
cin >>v;
cout << v<<"\n";
shortest(v,n);
 }
 
int shortest(int v,int n)
{
int min;
for(i=1;i<=n;i++)
{
S[i]=0;
dist[i]=cost[v][i];
}
path[++p]=v;
S[v]=1;
dist[v]=0;
for(i=2;i<=n-1;i++)
{
k=-1;
min=31999;
for(j=1;j<=n;j++)
{
if(dist[j]<min && S[j]!=1)
{
min=dist[j];
k=j;
}
}
if(cost[v][k]<=dist[k])
p=1;
path[++p]=k;
for(j=1;j<=p;j++)
cout<<path[j];
cout <<"\n";
//cout <<k;
S[k]=1;
for(j=1;j<=n;j++)
if(cost[k][j]!=31999 && dist[j]>=dist[k]+cost[k][j] && S[j]!=1)
 dist[j]=dist[k]+cost[k][j];
}
}

OUTPUT

 Enter no of vertices6
 Enter no of edges11
 enter
 EDGE Cost
 1 2 50
 1 3 45

 1 4 10
 2 3 10
 2 4 15
 3 5 30
 4 1 10
 4 5 15
 5 2 20
 5 3 35
 6 5 3
 enter initial vertex1
 1
 14
 145
 1452
 13



Not Satisfied ? Just search & get the result

Related Posts Plugin for WordPress, Blogger...
Be Sociable, Share!

Related posts:

  1. C++ program – Implement dynamic programming algorithm to solve the all pairs shortest path problem
  2. C++ program – Uses dynamic programming algorithm to solve the optimal binary search tree problem
  3. C++ Program – implement Linear Search algorithm
  4. Program to implement Binary Search Algorithm
  5. Sample – Program to enter 10 integers in a single-dimension array and then print out the array in ascending order.

Leave a Comment

Previous post:

Next post: