Code:
#include<stdio.h>
int main()
{
int a,b,w,v,e,i;
int g[20][20],visited[20],d[20],p[20];
printf("enter the number of vertices");
scanf("%d",&v);
printf("enter the number of edges");
scanf("%d",&e);
for(i=1;i<=v;i++)
{
for(int j=1;j<=v;j++)
{
g[i][j]=0;
}
}
for(i=1;i<=e;i++)
{
printf("enter edge info");
scanf("%d",&a);
scanf("%d",&b);
printf("enter weight of the edge");
scanf("%d",&w);
g[a][b]=g[b][a]=w;
}
void calldij()
{
for(i=1;i<=v;i++)
{
p[i]=visited[i]=0;
}
for(i=1;i<=v;i++)
{
d[i]=32767;
}
dij();
}
void dij()
{
int current,source,dest;
printf("enter source and destination vertex");
scanf("%d",&source);
scanf("%d",&dest);
current=source;
visited[current]=1;
d[current]=0;
while(current!=dest)
{
int dc=d[current];
for(i=1;i<=v;i++)
{
if((g[current][i]!=0) && (visited[i]!=1))
{
if((g[current][i]+dc)<(d[i]))
{
d[i]=(g[current][i]+dc);
p[i]=current;
}
}
}
int min=32767;
for(i=1;i<=v;i++)
{
if((visited[i]!=1) && (d[i]<min))
{
min=d[i];
current=i;
}
}
visited[current]=1;
}
printf("shortest distance= %d",d[dest]);
}
return 0;
}
Please revert as soon as possible. URGENT!
Comment