Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #define infinity 999
- void dij(int n,int v,int cost[10][10],int dist[])
- {
- int i,u,count,w,flag[10],min;
- for(i=1;i<=n;i++)
- flag[i]=0,dist[i]=cost[v][i];
- count=2;
- while(count<=n)
- {
- i=1;
- min=99;
- for(w=1;w<=n;w++)
- if(dist[w]<min && !flag[w])
- min=dist[w],u=w;
- flag[u]=1;
- count++;
- for(w=1;w<=n;w++)
- if((dist[u]+cost[u][w]<dist[w])&&!flag[w])
- dist[w]=dist[u]+cost[u][w];
- }
- }
- void main()
- {
- int n,v,i,j,cost[10][10],dist[10];
- printf("\n enter no. of nodes:");
- scanf("%d",&n);
- printf("\n enter cost matrix:");
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- {
- scanf("%d",&cost[i][j]);
- if(cost[i][j]==0)
- cost[i][j]=infinity;
- }
- printf("\n enter source:");
- scanf("%d",&v);
- dij(n,v,cost,dist);
- printf("\n shortest path:");
- for(i=1;i<=n;i++)
- if(i!=v)
- printf("\n %d ->%d,cost=%d\n",v,i,dist[i]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement