Expand|Select|Wrap|Line Numbers
- #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!