单源最短路问题(dijkstra算法)
2017-06-22 20:43
281 查看
1.邻接矩阵实现 复杂度O(V^2)
int w[MAX_V][MAX_V]; ///w[u][v]表示边u->v的权值(不存在时是INF)
int d[MAX_V]; ///顶点s出发的最短距离
bool vis[MAX_V]; ///已经连通的点
int V; ///顶点数
///求起始点s到各个顶点的最短距离
void dij(int s)
{
fill(d,d+V,INF);
fill(vis,vis+V,false);
d[s]=0;
while(true)
{
int v=-1;
for(int u=0;u<V;u++) ///从未使用的顶点中选择一个距离最小的顶点
if(!vis[u]&&(v==-1||d[u]<d[v]))
v=u;
if(v==-1) break;
vis[v]=true;
for(int u=0;u<V;u++)
d[u]=min(d[u],d[v]+w[v][u]);
}
}
2.使用STL的优先队列实现 复杂度O(ElogV) E为边的个数
待更...
int w[MAX_V][MAX_V]; ///w[u][v]表示边u->v的权值(不存在时是INF)
int d[MAX_V]; ///顶点s出发的最短距离
bool vis[MAX_V]; ///已经连通的点
int V; ///顶点数
///求起始点s到各个顶点的最短距离
void dij(int s)
{
fill(d,d+V,INF);
fill(vis,vis+V,false);
d[s]=0;
while(true)
{
int v=-1;
for(int u=0;u<V;u++) ///从未使用的顶点中选择一个距离最小的顶点
if(!vis[u]&&(v==-1||d[u]<d[v]))
v=u;
if(v==-1) break;
vis[v]=true;
for(int u=0;u<V;u++)
d[u]=min(d[u],d[v]+w[v][u]);
}
}
2.使用STL的优先队列实现 复杂度O(ElogV) E为边的个数
待更...
相关文章推荐
- POJ 1847 最短路问题 dijkstra算法的实现
- [图论]最短路问题 dijkstra算法
- 【解题报告】HDU 1874 畅通工程续 -- Dijkstra算法详解 单源点最短路问题
- hdu2112 一个人的旅行 最短路问题,dijkstra算法
- HDOJ 1596 find the safest road(类最短路问题,dijkstra算法)
- Dijkstra算法:任意两点间的最短路问题 路径还原
- Dijkstra算法(单源最短路问题)
- 【PAT】1003. Emergency (25)【单源最短路问题/dijkstra算法】
- 单源最短路问题 dijkstra算法 总结
- P103 单源最短路问题 第三种Dijkstra算法
- HDU 1874 畅通工程续(最短路问题 Dijkstra算法) O(V*E)
- POJ 3268 Silver Cow Party(Dijkstra算法求解来回最短路问题)
- 【解题报告】 POJ 1556 The Doors -- 最短路问题 Dijkstra算法 + 直线相交
- 总结分析一下三种求解最短路问题的算法,dijkstra算法,spfa算法,floyd算法。
- 【模板算法】单源最短路问题-dijkstra算法(邻接表+优先队列优化)
- HDU - 2680 - Choose the best route (经典最短路问题dijkstra算法!!)
- POJ 1847 最短路问题 dijkstra算法的实现
- HDU2680-Choose the best route(经典最短路问题dijkstra算法)
- 一道最短路问题:Sweet Butter 香甜的黄油
- ZOJ-2008-一个最短路问题-(dijkstra+heap,spfa)