dijkstra演算法(輸出最短路徑)

2021-10-05 02:31:41 字數 1299 閱讀 1801

題目描述

給你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演算法是很有代表性的最短路徑演算法,在很多專業課程中都作為基本內容有詳細的...