最短路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演算法演算法
- 最短路徑——Dijkstra演算法和Floyd演算法演算法
- 10行實現最短路演算法——Dijkstra演算法
- 0016:單源最短路徑(dijkstra演算法)演算法
- 最短路-樸素版Dijkstra演算法&堆優化版的Dijkstra演算法優化
- 最短路之Dijkstra
- 圖論-Dijkstra最短路圖論
- 最短路徑—Dijkstra(迪傑斯特拉)演算法演算法
- 一個人的旅行 (dijkstra演算法求最短路)演算法
- 最短路徑——dijkstra演算法程式碼(c語言)演算法C語言
- 如何在 Java 中實現 Dijkstra 最短路演算法Java演算法
- 最短路徑(dijkstra 與 Floyd)
- POJ2387 Til the Cows Come Home【最短路 Dijkstra演算法】演算法
- python實現Dijkstra演算法之 最短路徑問題Python演算法
- 一篇文章講透Dijkstra最短路徑演算法演算法
- 圖的最短路徑(Dijkstra | Floyd)
- 最短路-迪傑斯特拉(dijkstra)
- 最短路徑--dijkstra演算法、弗洛伊德(Floyd)演算法(帶路徑輸出)演算法
- [最短路徑問題]Dijkstra演算法(含還原具體路徑)演算法
- 路徑規劃演算法 - 求解最短路徑 - Dijkstra(迪傑斯特拉)演算法演算法
- 最短路模板(堆最佳化Dijkstra)(自用
- 7-1 最短路徑之Dijkstra (10分)
- 最短路:求最長最短路
- 最短路 || 最長路 || 次短路
- Dijkstra演算法演算法
- Python 圖_系列之縱橫對比 Bellman-Ford 和 Dijkstra 最短路徑演算法Python演算法
- 貪心演算法Dijkstra演算法
- 最短路演算法演算法
- 資料結構------最短路徑Dijkstra和最小生成樹Prim資料結構
- 【JAVA演算法】圖論演算法 -- Dijkstra演算法Java演算法圖論
- Dijkstra 演算法的手動分析演算法
- 最短路徑演算法演算法
- Floyd最短路演算法演算法