最短路dijkstra演算法
一直想著把這個板子存一下,但老是忘了,結果每次還得自己手打
dijkstra最短路演算法有兩種方法 第一種n^2的時間,用一個陣列維護起點到所有點最短距離,不斷的用最新點連進來的邊來更新陣列
第二種方法是 nlogm的 用一個優先佇列來找出區域性最優解,進而擴散至全域性最優
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+7;
typedef long long ll;
const ll inf=1e18;
int n,m,s,t;
struct node
{
int to;
ll w;
bool operator<(const node &s) const
{
return w>s.w;
}
};
vector<node>son[N];
ll ans[N];
void dijkstra()
{
priority_queue<node>p;
for(int i=1;i<=n;i++) ans[i]=inf;
p.push({s,0});
while(p.size())
{
node a=p.top();
p.pop();
if(a.w>=ans[a.to]) continue;
ans[a.to]=a.w;
for(int i=0;i<son[a.to].size();i++)
{
node d=son[a.to][i];
if(ans[d.to]>d.w+a.w)
p.push({d.to,d.w+a.w});
}
}
}
int main()
{
//ios::sync_with_stdio(false);
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
int a1,a2;ll a3;
scanf("%d%d%lld",&a1,&a2,&a3);
son[a1].push_back({a2,a3});
//son[a2].push_back({a1,a3});
}
dijkstra();
for(int i=1;i<=n;i++) printf("%lld ",ans[i]);
// printf("%lld\n",ans[n]);
}
相關文章
- 最短路徑之Dijkstra演算法演算法
- 最短路徑問題 (dijkstra演算法)演算法
- 單源最短路徑-Dijkstra演算法演算法
- 單源最短路徑 -- Dijkstra演算法演算法
- dijkstra最短路演算法模板(雙源)演算法
- 最短路徑——Dijkstra演算法和Floyd演算法演算法
- 最短路徑—Dijkstra演算法和Floyd演算法演算法
- 10行實現最短路演算法——Dijkstra演算法
- 最短路演算法詳解(Dijkstra/SPFA/Floyd)演算法
- 最短路-樸素版Dijkstra演算法&堆優化版的Dijkstra演算法優化
- 一個人的旅行 (dijkstra演算法求最短路)演算法
- 圖的單源最短路徑(Dijkstra演算法)演算法
- 最短路徑——dijkstra演算法程式碼(c語言)演算法C語言
- 最短路徑—Dijkstra(迪傑斯特拉)演算法演算法
- 0016:單源最短路徑(dijkstra演算法)演算法
- 如何在 Java 中實現 Dijkstra 最短路演算法Java演算法
- 求兩點之間最短路徑-Dijkstra演算法演算法
- HDU3790 最短路徑問題【Dijkstra演算法】演算法
- 單源最短路徑複習--Dijkstra演算法和Floyd演算法演算法
- 一篇文章講透Dijkstra最短路徑演算法演算法
- python實現Dijkstra演算法之 最短路徑問題Python演算法
- 《圖論》——最短路徑 Dijkstra演算法(戴克斯特拉演算法)圖論演算法
- POJ2387 Til the Cows Come Home【最短路 Dijkstra演算法】演算法
- [最短路徑問題]Dijkstra演算法(含還原具體路徑)演算法
- 路徑規劃演算法 - 求解最短路徑 - Dijkstra(迪傑斯特拉)演算法演算法
- 最短路徑--dijkstra演算法、弗洛伊德(Floyd)演算法(帶路徑輸出)演算法
- 資料結構與演算法——最短路徑Dijkstra演算法的C++實現資料結構演算法C++
- POJ 1062 昂貴的聘禮 (最短路應用 Dijkstra演算法)演算法
- Dijkstra演算法演算法
- Python 圖_系列之縱橫對比 Bellman-Ford 和 Dijkstra 最短路徑演算法Python演算法
- 貪心演算法Dijkstra演算法
- 資料結構------最短路徑Dijkstra和最小生成樹Prim資料結構
- Floyd最短路演算法演算法
- 最短路徑演算法演算法
- JAVA實現DIJKSTRA演算法Java演算法
- 最短路徑(Floyd演算法)演算法
- Djikstra最短路徑演算法演算法
- 最短路-SPFA演算法&Floyd演算法演算法