題目描述
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。
輸入描述:
輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一行是兩個數 s,t;起點s,終點t。n和m為0時輸入結束。
(1輸入
3 21 2 5 6
2 3 4 5
1 30 0
輸出9 11
————————————————
#include
#include
#include
using
namespace std;
/* 圖的資訊 */
typedef struct edge
void
print()
} edge;
vector graph[
1001];
typedef struct point
point
(int n,
int d)
} point;
int n, m;
// 1 ~ n 編號 ; m個邊
int u, v;
// 起點 終點
int inf =
9999999
;int dis[
1001];
int cost[
1001];
void
print()
}}void
dijkstra
(int u)}}
return;}
intmain()
for(
int i =
1; i <= n; i ++
)// 輸入
int s,e,l,c;
for(
int i =
1; i <= m; i++
)// print(); // 測試了 沒問題
//填充dis cost
cin >
> u >
> v;
dijkstra
(u);
cout <
< dis[v]
<
<
" "<
< cost[v]
<
< endl;}}
```c
最短路 dijkstra演算法 路徑輸出
dijkstra 迪傑斯特拉 演算法 即給定圖和起點,通過演算法得到起點到其餘點的最短路徑。主要步驟就是 每次從剩餘頂點中選乙個離起點最近的點,然後更新這個點周圍的點離起點的距離,同時標記這個點。直到所有的點都被標記。01 23 10 00第二次遍歷結束path陣列 01 23 10 10 incl...
最短路 Dijkstra演算法
dijksitra演算法求最短路僅僅適用於不存在右邊是負權的情況 bellman ford演算法沒有這乙個限制 主要特點是從起點為中心向外層層擴充套件,直到擴充套件到終點為止。即乙個最短路路徑中經過的所有點這條路均是其最短路。反證法易證 dijkstra基本思路 找到最短距離已經確定的頂點,從它出發...
dijkstra最短路演算法
dijkstra演算法 1.定義概覽 dijkstra 迪傑斯特拉 演算法是典型的單源最短路徑演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法是很有代表性的最短路徑演算法,在很多專業課程中都作為基本內容有詳細的...