資料結構與演算法問題 單源最短路徑 浙大OJ

2021-06-23 06:03:13 字數 1261 閱讀 7022

題目描述:給你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 2

1 2 5 6

2 3 4 5

1 30 0

樣例輸出:

9 11

**:

#include using namespace std;

const int max = 65535;

typedef struct graph

graph;

void create(graph * &g) //生成圖

for (k = 0; k < g->numedge; k++) }

void mydijkstra(graph * &g,int start,int end) //dijkstra演算法

for (i = 1; i <= g->numvex; i++)

mark1[start] = 1;

mark2[start] = 1;

dist1[start] = max;

dist2[start] = max;

for (i = 1; i < g->numvex; i++)

if (!mark2[j] && dist2[j] < min2)

j++;

} mark1[k1] = 1;

dist1[k1] = min1;

mark2[k2] = 1;

dist2[k2] = min2;

for (j = 1; j <= g->numvex; j++)

}cout << dist1[end];

cout << " ";

cout << dist2[end];

}int main()

資料結構 單源最短路徑 Dijkstra演算法

dijkstra演算法 給定一帶權圖,圖中每條邊的權值是非負的,代表著兩頂點之間的距離。指定圖中的一頂點為源點,找出源點到其它頂點的最短路徑和其長度的問題,即是單源最短路徑問題。dijkstra演算法 求解單源最短路徑問題的常用方法是dijkstra 迪傑斯特拉 演算法。該演算法使用的是貪心策略 每...

單源最短路徑演算法

簡單介紹 最短路徑演算法是圖演算法中的經典演算法,是用於解決圖中某個頂點到另外乙個頂點所經過路徑的花銷最小 這裡的花銷可能是時間也可能指費用等 dijkstra是用於解決單源最短路徑的經典演算法。圖的儲存方式 鄰接矩陣 在鄰接矩陣中,要獲取某個結點的出度和入讀,是通過掃瞄結點所在臨界矩陣中的行列完成...

單源最短路徑問題

如圖,求v0到其他頂點的最短路徑及其長度,廢話少說,用dijkstra演算法。我在 資料結構 c語言版 裡面的 的基礎上寫了乙個直接儲存路徑的版本。看 include includeusing namespace std define maxint 1000000 src 為源節點 g 有向圖的鄰接...