Dijkstra
Dijkstra 思路:每一次枚举当前没有枚举过的 d[] 值最小的点 x ,然后对该结点进行标记,然后再分别遍历 x 的每一条边,用 d[x] 去更新 d[y] , d[y]=min(d[y],d[x]+w[x][y]) , w[x][y] 表示 x 与 y 之间的边的权重,具体 Dijkstra 的结构实际上是跟 bfs 差不多的,可以利用一个优先队列来对 Dijkstra 进行优化。 模板题: [JLOI2011]飞行路线 参考:[模板题: [JLOI2011]飞行路线]]( https://oi-wiki.org/graph/shortest-path/#91jloi201193 ) 代码: // Created by CAD on 2019/8/20. #include <bits/stdc++.h> #define INF 0x3f3f3f3f3f #define mst(name, value) memset(name,value,sizeof(name)) #define ll long long using namespace std; const int maxn=5e4+5; int head[maxn],cnt=0,d[maxn][20],s,t,k; bool vis[10005][20]; //这个不能开得过大不然会t struct edge{ int