最近在研究算法设计与分析,看到了单源最短路劲,特发文一篇。
下面代码就是实现这个有向联通图
废话不说直接上代码
#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] 程序运行结果如图所示:
其中,第一行数据是当前节点的前一个节点。