迪杰斯特拉算法

来源:互联网 发布:郑州linux运维招聘 编辑:程序博客网 时间:2024/05/22 08:22
void Dijkstra(AdjMatrix N,int v,int D[],int p[]){int S[MAX];int mindistance,temp;int i,j,u;for(i=1;i<=N.vexnum;i++){D[i]=N.edges[v][i];S[i]=0;if(INDINITY==N.edges[v][i])p[i]= -1;elsep[i]=v;}S[v]=1;for(i=1;i<=N.vexnum;j++){mindistance=MAXWEIGHT;for(j=1;j<=N.vexnum;j++){if(0==S[j]&&D[j]<mindistance){mindistance=D[j];u=j;}}S[u]=1;for(j=1;j<=N.vexnum&&0==S[j];j++){temp=D[u]+N.edges[u][j];if(D[j]>temp){D[j]=temp;p[j]=u;}}}}