- #include<stdio.h>
- #include<conio.h>
- #define MAX 1000
- void dijkstra(int n,int v,int cost[10][10],int dist[10]);
- int main()
- {
- int n,v,i,j,cost[10][10],dist[10];
- clrscr();
- printf("\n Enter the number of Nodes: ");
- scanf("%d",&n);
- printf("\n Enter the Weight Matrix:\n");
- printf("\nEnter 1000 to denote Infinity\n");
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- scanf("%d",&cost[i][j]);
- }
- }
- printf("\n Enter the Source Node:");
- scanf("%d",&v);
- dijkstra(n,v-1,cost,dist);
- printf("\n Shortest Path from Node : %d",v);
- printf("\n#################################\n\n");
- for(i=0;i<n;i++)
- {
- printf("Distance to Node: %d is %d\n",i+1,dist[i]);
- }
- return 0;
- }
- void dijkstra(int n,int v,int cost[10][10],int dist[10])
- {
- int i,u,count,w,flag[10],min;
- for(i=0;i<n;i++)
- {
- flag[i]=0;
- dist[i]=cost[v][i];
- }
- count=1;
- while(count<n)
- {
- min=MAX;
- for(w=0;w<n;w++)
- {
- if(dist[w]<min && !flag[w])
- {
- min=dist[w];
- u=w;
- }
- }
- flag[u]=1;
- count++;
- for(w=0;w<n;w++)
- {
- if((dist[u]+cost[u][w]<dist[w])&&!flag[w])
- {
- dist[w]=dist[u]+cost[u][w];
- }
- }
- }
- }
|
No comments:
Post a Comment