最短路径算法总结(不断更新中)

mac2022-06-30  24

Dijkstra 算法

单源最短路径

define INF = 正无穷w[x][y]表示边不存在(x,y)memset(v, 0 , sizeof (v)); // 将所有点标记为没有进入集合 for ( int i = 1 ;i <= n;i ++ ) d[i] = (i == 0 ? 0 :INF); // 0为源点 到本身到距离为0 其余点到源点到距离为正无穷 for ( int i = 1 ;i <= n;i ++ ){ int x,m = INF; for ( int y = 1 ;y <= n;y ++ ) // 选取到源点最的点 if ( ! v[y] && d[y] <= m) { m = d[y]; x = y; } v[x] = 1 ; // 点x到最短路径已经找到 加入集合 for ( int y = 1 ;y <= n;y ++ ) // 对x到邻节点进行降距操作 if (d[y] > d[x] + w[x][y]) d[y] = d[x] + w[x][y];}

转载于:https://www.cnblogs.com/cyiner/archive/2011/05/19/2051404.html

最新回复(0)