标签:vexnum int 路径 算法 最短 dijkstra 数组
dijkstra算法
///不适用于边的权值为负值
void Dijkstra(Graph G,int v){
int s[G.vexnum]; //标记数组
int path[G.vexnum]; //路径数组
int dist[G.vexnum]; //最短路径数组
for(int i=0;i<G.vexnum;i++){
dist[i]=G.edge[v][i];
s[i]=0;
if(G.edge[v][i]<max) path[i]=v;
else path[i]=-1;
}
s[v]=1; //v已经加入
path[v]=-1; //v的前一个节点 初始化为-1
}
for(int i=0;i<G.vexnum;i++){
int min=max;
int u;
for(int j=0;j<G.vexnum;j++){
if(s[j]==0 && dist[j]<min){
min=dist[j]; //最短路径
u=j; //节点
}
s[u]=1; //将u节点标记为已经加入
}
for(int j=0;j<G.vexnum;j++){
if(s[j]==0 && dist[u]+G.Edge[u][j]<dist[j]){
dist[j]=dist[u]+G.Edges[u][i]; //更新数组dist[]
path[j]=u; //j的前一个节点为u
}
}
}
标签:vexnum,int,路径,算法,最短,dijkstra,数组 来源: https://blog.51cto.com/u_15260724/2879060
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。