EOJ 139 旅遊規劃 最短路徑演算法

2021-09-26 03:20:21 字數 940 閱讀 6613

有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度、以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。

輸入說明:輸入資料的第1行給出4個正整數n、m、s、d,其中n(2⩽n⩽500)是城市的個數,順便假設城市的編號為0−(n−1);m是高速公路的條數;s是出發地的城市編號;d是目的地的城市編號。隨後的m行中,每行給出一條高速公路的資訊,分別是:城市1、城市2、高速公路長度、收費額,中間用空格分開,數字均為整數且不超過500。輸入保證解的存在。

在一行裡輸出路徑的長度和收費總額,數字間以空格分隔,輸出結尾不能有多餘空格。

input

4 5 0 3

0 1 1 20

1 3 2 30

0 3 4 10

0 2 2 20

2 3 1 20

output

3 40
#include #define inf 99999

using namespace std;

struct mat

};int main()

; for(int i=0, u, v, d, t; i>u>>v>>d>>t;

mat[u][v].dist = d;

mat[u][v].toll = t;

mat[v][u].dist = d;

mat[v][u].toll = t;

}for(int i=0; icost[index].toll+mat[index][j].toll)

cost[j].toll = cost[index].toll+mat[index][j].toll;}}

}cout

}

PTA 旅遊規劃 (最短路)

旅遊規劃 25 分 有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2...

多元最短路徑 Floyd Warshall演算法

就拿從1到3,可以直接1 3,也可以1 2 3,我們發現,通過乙個 中轉 的2,1 3路徑會變短。可以在乙個路徑中插入另乙個頂點,這樣可能會比直接過去的路徑更短,假設每個頂點都經過頂點2中轉,可以有這樣的語句。我們用二維陣列graph儲存圖 int i int j for i 1 i n i 中轉頂...

6 1 最短路徑 Floyd Warshall演算法

只有五行核心的演算法 假設我們有四個點。每個點之間都有一定的距離,或者甚至沒有路 現在我們想要知道如何獲得兩點之間的最短路徑 使用之前說的深度優先或者寬度優先當然是可以的,不過有沒有更好的辦法?於是我們使用了floyd warshall,先進了一些的演算法 首先我們要知道,有的時候,通過n個點而從a...