題目描述:給你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 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 有向圖的鄰接...