迪杰特斯拉算法+堆优化
程序员文章站
2022-05-22 10:46:51
...
/*
O(eloge)堆优化dj算法,在n的数量级>=1e5时必须采用这种堆优化+邻接表方式
*/
struct node{
int p, w;
node(int a, int b):p(a), w(b){}
bool operator< (const node& b) const
{
return w > b.w;
}
};
vector<node> g[N];
priority_queue<node> sup;
void dijkstra(int start)
{
memset(dis, 0x3f, sizeof(dis));
dis[start] = 0; pre[start] = start;
sup.push(node(start, 0));
while (!sup.empty())
{
node front = sup.top();
sup.pop(); int tempv = front.p;
if (visit[tempv]) continue;
visit[tempv] = true;
for (int i = 0; i < g[tempv].size(); i++)
{
int p = g[tempv][i].p;
if (!visit[p] && dis[tempv]+g[tempv][i].w < dis[p])
{
dis[p] = dis[tempv]+g[tempv][i].w;
pre[p] = tempv;
sup.push(node(p, dis[p]));
}
}
}
}
推荐阅读
-
Java 迪杰斯特拉算法实现查找最短距离的实现
-
基于Python实现迪杰斯特拉和弗洛伊德算法
-
迪杰斯特拉(Dijkstra)算法(Python)
-
js图数据结构处理 迪杰斯特拉算法代码实例
-
c/c++ 图的最短路径 Dijkstra(迪杰斯特拉)算法
-
图的五种求最短路径算法(Dijkstra、堆优化Dijstra、Bellmon-Ford、SPFA、Floyd-Warshall)
-
迪杰斯特拉算法(Dijkstra)
-
Python实现迪杰斯特拉算法并生成最短路径的示例代码
-
邻接矩阵prim:php实现图的邻接矩阵及普里姆(prim算法),弗洛伊德(floyd),迪杰斯特拉(dijkstra)算法
-
13.GIS中Dijkstra(迪杰斯特拉)算法如何实现?(JavaScript版本有向图)