最近在研究算法设计与分析,看到了单源最短路劲,特发文一篇。
下面代码就是实现这个有向联通图
废话不说直接上代码
#include#define m 5000 int c[5][5]= {m,10,m,30,100,m,m,50,m,m,m,m,m,m,10,m,m,20,m,60,m,m,m,m,m, }; int dist[5] ; void Dijkstra(int dist[]) {int prev[5];int n=4;int v=0;int s[5],i,j,temp,u,newdist;for(i=0;i<=n;i++){dist[i]=c[v][i];s[i]=0;if(dist[i]==m)prev[i]=0;else prev[i]=v;}dist[v]=0;s[v]=1;//for(i=0;i<5;i++){printf("%d ",dist[i]);}//printf("\n");for(i=0;i<=n;i++){temp=m;u=v;for(j=1;j<=n;j++)if((!s[j])&&(dist[j] 程序运行结果如图所示:
其中,第一行数据是当前节点的前一个节点。