題解 騎車比賽

2021-09-14 02:27:22 字數 935 閱讀 8007

描述

小信準備去參加騎車比賽,比賽在 n 個城市間進行,編號從 1 到 n。選手們都從城市 1 出發,終點在城市 n。

已知城市間有 m 條道路,每條道路連線兩個城市,注意道路是雙向的。現在小信知道了他經過每條道路需要花費的時間,他想請你幫他計算一下,他這次比賽最少需要花多少時間完成。

輸入第一行輸入兩個整數 n,m(1≤n≤1,000,1≤m≤5,000),分別代表城市個數和道路總數。接下來輸入 m 行,每行輸入三個數字 a,b,c(1≤a,b≤n,1≤c≤200),分別代表道路的起點和道路的終點,以及小信騎車通過這條道路需要花費的時間。保證輸入的圖是連通的。

輸出輸出一行,輸出乙個整數,輸出小信完成比賽需要的最少時間。

輸入樣例 1

5 61 2 2

2 3 3

2 5 5

3 4 2

3 5 1

4 5 1

輸出樣例 1

6分析:記住這道題使用最短路來走的。最短路的方法有: dijkstra 單源最短路演算法,spfa 單源最短路演算法,floyd 多源最短路演算法。當然,多種方法不一定最短最簡便,說其中一種——floyd 多源最短路演算法。

floyd 多源最短路演算法的好處是:floyd 具有高效、**簡短的優勢。他無論怎麼樣都只有乙個公式—— g[i][j]=min(g[i][j],g[i][k]+g[k][j]),有了這個共識,就十分好用了。

**:#includeusing namespace std;

const int maxn=1010;

const int inf=0x3f3f3f3f;

int g[maxn][maxn];

void floyd(int n)

} }} int main()

floyd(n);

cout《這個方法十分簡單,了解演算法請**以下**:

範圍圖:

演算法:

dijkstra堆優化 騎車比賽

第一行輸入兩個整數 n,m 1 n 1,000,1 m 5,000 分別代表城市個數和道路總數。接下來輸入 m 行,每行輸入三個數字 a,b,c 1 a,b n,1 c 200 分別代表道路的起點和道路的終點,以及蒜頭君騎車通過這條道路需要花費的時間。保證輸入的圖是連通的。輸出格式 輸出一行,輸出乙...

計蒜客 騎車比賽

問題描述 蒜頭君準備去參加騎車比賽,比賽在 n 個城市間進行,編號從 1 到 n。選手們都從城市 1 出發,終點在城市 n。已知城市間有 m 條道路,每條道路連線兩個城市,注意道路是雙向的。現在蒜頭君知道了他經過每條道路需要花費的時間,他想請你幫他計算一下,他這次比賽最少需要花多少時間完成。輸入格式...

12 7 比賽題解

這個題的意思就是對於給定的數x,找到兩個數a,b滿足以下條件 可以看出a,b是不唯一的,所以這道題是spj,那我們只要找到最好找的就好了。a b 最大的時候,就是a b x對吧,正好這時候也滿足題目中的其它要求。如果x x 都不滿足大於 x 這個條件的話,肯定就無解了,所以我們只需要判斷這個條件就好...